Index

一週間のカリキュラム 1週間で、Ruby 〜 Ruby on Railsまでを学ぶ

シリーズの6日目、ドキュメントを書く,ログ管理についてです。

6日目


1 ドキュメントを書く

ドキュメント生成はツールを利用してソースコードからhtml形式のドキュメントを生成します。 rdoc を利用しても良いですが、yardがオススメです。

1-1 rdoc

一旦標準のrdocでドキュメントが生成される形を確認してみましょう。 globalのrdocコマンドが入ってるか確認してみてください。

$ which rdoc

入ってる場合は、とりあえず

$ rdoc --excude */*/*.rb

とすればrbファイルを指定したドキュメントが(/doc ディレクトリに)生成されます。

全体を生成するには

$ rdoc

ですが、かなり見にくくはなります。

[参考]](http://webos-goodies.jp/archives/51072281.html)

2 yard

yard

yardはrdocに比べて優れてる点が多数あるため、オススメです。

2-1 ファイルを指定して yardを試してみる。

yard をgemとしてグローバルにインストールしましょう。

$ gem install yard

test.rbがあるとすると下記のようにしてドキュメント(/doc ディレクトリ)を生成できます。

$ yardoc test.rb

ある程度自動でパラメーター関係なども処理してくれるので非常に便利です。

作成したドキュメントは yard serverで確認

$ yard server

2-2 オプションを指定しておく

予め、.yardoptsというファイルを作成しておきましょう。

--no-private --protected './**/*.rb' - README

これでオプション類を指定せずとも、 yardoc コマンドでドキュメントが生成できます。

一例として記事コントローラーにコメントを書くパターンを掲載しておきます。

# # 記事関係コントローラー
#ユーザー権限で管理
# ``` before_action :authenticate_user!, only: %i[new create edit update destroy] ```
class ArticlesController < ApplicationController
  before_action :authenticate_user!, only: %i[new create edit update destroy]

  # 一覧表示
  # @note
  # category_id URLパラメーター カテゴリー番号
  # search_word URLパラメーター 検索ワード
  # @return [View] Viewテンプレート
  def index
    @articles = if params[:category_id]
                  Article.where(category_id: params[:category_id])
                elsif params[:search_word]
                  Article.where('title LIKE ?', "%#{params[:search_word]}%")
                else
                  Article.all
                end

    @articles = @articles.page(params[:page])
  end

  # 1記事表示
  # @note
  # id URLパラメーター id指定
  # @return [View] Viewテンプレート
  def show
    @article = Article.find(params[:id])
    # @category_name = @article.category.name
  end

  # 記事新規作成
  # @return [View] Viewテンプレート
  def new
    @article = Article.new
  end

  # 新規記事保存
  # @note
  # ポストされたarticle_paramsをもとに新規作成
  # @return [View] Viewテンプレート
  def create
    @article = Article.new(article_params)

    if @article.save
      redirect_to @article
    else
      render :new, status: :unprocessable_entity
    end
  end

  # 記事編集
  # @note
  # id指定して編集開始
  # @return [View] Viewテンプレート
  def edit
    @article = Article.find(params[:id])
  end

  # 記事を上書き保存
  # @note 
  # id, article_params を指定してフォームからのデータを元にアップデート
  # @return [View] Viewテンプレート
  def update
    @article = Article.find(params[:id])

    if @article.update(article_params)
      redirect_to @article
    else
      render :edit, status: :unprocessable_entity
    end
  end

  # 記事削除
  # @note
  # 記事を削除する id指定
  # @return [View] Viewテンプレート
  def destroy
    @article = Article.find(params[:id])
    @article.destroy

    redirect_to root_path, status: :see_other
  end


  private
  # private バリデーション ここは設定で出力しないようにしてあるが、必要な場合は
  # yardoptsの --no-privateを --private オプションに変更する。
  def article_params
    params.require(:article).permit(:title, :body, :category_id)
  end
end



その他 参考

参考 yardについて

参考スライド


3 ログ

herokuのログを確認する

ローカルで

$ heroku logs

$ heroku logs -n 200

$ heroku logs --tail

参考

ログの制限

ログの保管には1週間という期限があります。

アドオンを導入して、他でログを管理する事もオススメです。

最新記事一覧

続きを見る

関連コンテンツ

カテゴリー一覧

TOP フルスタックエンジニアを目指すに方々へ 2022年3月12日 asdfでphpとrubyのバージョン管理を共存させる。