2015年9月27日日曜日

Rails4のバージョンをアップする rails4.2.1からrails4.2.4へアップデート

  • 公開日:2015年09月27日

記事概要


Rails4でRails4のバージョンをアップする方法を記載した記事です

環境


  • Rails4.2.4
  • Ruby2.2.2
  • bundle, rbenv

Rails4のバージョンアップ


rails4.2.1からrails4.2.4へのアップデートは、マイナーバージョンアップデートです。
アップデートをするにあたって、特に注意点はありません。
なので、

  • railsのアップデート
  • テストコードの実行
  • 動作確認

の手順を一気に進めていきます。

まずはGemfileを変更します。

Gemfile

#gem 'rails', '4.2.1'
gem 'rails', '4.2.4'

設定ファイルの変更が終わったら『bundle update rails』コマンドでrailsのみを更新します。


bundle update rails
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies........
Using rake 10.4.2
Using i18n 0.7.0
Installing json 1.8.3 (was 1.8.2)
Installing minitest 5.8.1 (was 5.6.0)
Using thread_safe 0.3.5
Using tzinfo 1.2.2
Installing activesupport 4.2.4 (was 4.2.1)
Using builder 3.2.2
Using erubis 2.7.0
Using mini_portile 0.6.2
Using nokogiri 1.6.6.2
Using rails-deprecated_sanitizer 1.0.3
Installing rails-dom-testing 1.0.7 (was 1.0.6)
Installing loofah 2.0.3 (was 2.0.1)
Using rails-html-sanitizer 1.0.2
Installing actionview 4.2.4 (was 4.2.1)
Installing rack 1.6.4 (was 1.6.0)
Using rack-test 0.6.3
Installing actionpack 4.2.4 (was 4.2.1)
Installing globalid 0.3.6 (was 0.3.5)
Installing activejob 4.2.4 (was 4.2.1)
Installing mime-types 2.6.2 (was 2.5)
Using mail 2.6.3
Installing actionmailer 4.2.4 (was 4.2.1)
Installing activemodel 4.2.4 (was 4.2.1)
Installing arel 6.0.3 (was 6.0.0)
Installing activerecord 4.2.4 (was 4.2.1)
Using bundler 1.9.8
Using thor 0.19.1
Installing railties 4.2.4 (was 4.2.1)
Using hike 1.2.3
Installing multi_json 1.11.2 (was 1.11.0)
Using tilt 1.4.1
Installing sprockets 2.12.4 (was 2.12.3)
Installing sprockets-rails 2.3.3 (was 2.2.4)
Installing rails 4.2.4 (was 4.2.1)
Using actionview-encoded_mail_to 1.0.7
Using addressable 2.3.8
Using descendants_tracker 0.0.4
Using ice_nine 0.11.1
Using axiom-types 0.1.1
Using colorize 0.7.7
Using net-ssh 2.9.2
Using net-scp 1.2.1
Using sshkit 1.7.1
Using capistrano 3.2.1
Using capistrano-bundler 1.1.4
Using capistrano-rails 1.1.3
Using capistrano-rbenv 2.0.3 from git://github.com/capistrano/rbenv.git (at master)
Using capistrano-ssh-doctor 1.0.0
Using capistrano3-unicorn 0.2.1
Using hitimes 1.2.2
Using timers 4.0.1
Using celluloid 0.16.0
Using coderay 1.1.0
Using coercible 1.0.0
Using coffee-script-source 1.9.1.1
Using execjs 2.5.2
Using coffee-script 2.4.1
Using coffee-rails 4.0.1
Using database_cleaner 1.4.1
Using diff-lcs 1.2.5
Using launchy 2.4.3
Using email_spec 1.6.0
Using equalizer 0.0.11
Using factory_girl 4.5.0
Using factory_girl_rails 4.5.0
Using ffi 1.9.8
Using formatador 0.2.5
Using hashie 3.4.1
Using multi_xml 0.5.5
Using rack-accept 0.4.5
Using rack-mount 0.8.3
Using virtus 1.0.5
Using grape 0.11.0
Using rb-fsevent 0.9.4
Using rb-inotify 0.9.5
Using listen 2.10.0
Using lumberjack 1.0.9
Using nenv 0.2.0
Using shellany 0.0.1
Using notiffany 0.0.6
Using method_source 0.8.2
Using slop 3.6.0
Using pry 0.10.1
Using guard 2.12.5
Using guard-compat 1.2.1
Using rspec-support 3.2.2
Using rspec-core 3.2.3
Using rspec-expectations 3.2.1
Using rspec-mocks 3.2.1
Using rspec 3.2.0
Using guard-rspec 4.5.0
Using jbuilder 2.2.13
Using jquery-rails 4.0.3
Using kaminari 0.16.3
Using kgio 2.9.3
Using libv8 3.16.14.7
Using mysql2 0.3.18
Using raindrops 0.13.0
Using rdoc 4.2.0
Using ref 1.0.5
Using rspec-rails 3.2.1
Using sass 3.2.19
Using sass-rails 4.0.5
Using sdoc 0.4.1
Using spring 1.3.4
Using spring-commands-rspec 1.0.4
Using therubyracer 0.12.2
Using uglifier 2.7.1
Using unicorn 4.9.0
Bundle updated!

成功です。続けてrspecの既存のテストコードを実行します。


bundle exec rspec spec
155 examples, 0 failures

成功です。
最後に、ブラウザ経由で一通りの動作を確認します。問題なければ、Rails4のバージョンアップは成功となります。

あとはCapistrano等を使って本番環境にビルドしましょう。

まとめ


2015年の秋には、rails5のリリースが予定されています。
技術的負債が溜まっているプロジェクトを抱えているなら、今のうちにコツコツと解消しておきましょう。

以上

Rails4の開発にオススメの本


イノベーションを感じるのにオススメの本


運営サイト(railsで作成しています)


参考サイト

2015年9月26日土曜日

Rails4でログを日付でローテーションする

  • 公開日:2015年09月26日

記事概要


Rails4でログを日付でローテーションする設定方法を記載した記事です

環境


  • Rails4.2.4
  • Ruby2.2.2
  • bundle, rbenv

Rails4ログ設定の基本


Rails4のログはデフォルトの設定では、


{project folder}/log

の配下に出力されます。
また、ログは環境ごとに別ファイルで出力されます。

ログファイル

path 説明
log/development.log 開発環境で出力されるログ
log/production.log 本番環境で出力されるログ
log/test.log テスト環境で出力されるログ

環境ごとに出力されるログレベルはデフォルトでは以下になります。

ログレベル

環境(ENV) ログレベル(LOG LEVEL)
development debug
production info
test debug

上記で説明したことを総合すると、本番環境でのログ出力は
ログレベルinfoでlog/production.logに出力される
ということになります。

しかし、このデフォルト設定のままで、アプリを使用し続けるとログの容量が大量に蓄積してしまいます。
なので、適切なログのローテーションの設定をする必要があります。

Rails4ログローテションの設定


Rails4でログローテションの設定をするのは簡単です。

environment/production.rb

config.logger = Logger.new('log/production.log', 'daily')

上記は本番環境の設定です。
一日ごとにログローテーションをして、ログをlog/production.logに出力しています。
また、本番環境以外に適用するには、環境別の設定ファイルに記載することで反映されます。

環境別の設定ファイル

環境(ENV) 設定ファイル(SETTING FILE)
共通 application.rb
開発環境 environment/development.rb
本番環境 environment/production.rb
テスト環境 environment/test.rb

第二引数の'daily'を設定することで、production.log.YYYYMMDD.N といったログファイルが生成されます。
他にも'weekly'と'monthly'が利用できます。

また、日付でローテーションの設定をした場合、古い日付のログを自動で削除することはできません。
なので、古い日付のログが不要な場合は、シェルを作成してcronで古いログを削除するようにします。

まとめ


Rails4では他にも容量でログのログローテーションを設定することも可能です。こちらの設定をした場合、 過去のログファイルを自動で削除することができます。
また、Linuxのlogrotateの機能を利用することもできます。

どの機能にも一長一短があり、ベストな解はありません。
自分のアプリに最も適したログの設定をすることが重要になります。

以上です。

Rails4の開発にオススメの本


イノベーションを感じるのにオススメの本


運営サイト(railsで作成しています)


参考サイト