一週間のカリキュラム 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は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
その他 参考
3 ログ
herokuのログを確認する
ローカルで
$ heroku logs
$ heroku logs -n 200
$ heroku logs --tail
ログの保管には1週間という期限があります。
アドオンを導入して、他でログを管理する事もオススメです。