Ruby
Rails

Rails 5.1.0.beta1 試してみた

More than 1 year has passed since last update.

Rails 5.1.0.beta1 がリリース 🎉

Release v5.1.0.beta1 · rails/rails

Rails 5.1.0.beta1: Loving JavaScript, System Tests, Encrypted Secrets, and more - Riding Rails

主な変更点

Rails 5.1の変更点まとめ - Qiita

実行環境

Rails 5.1.0.beta1
Ruby 2.4.0
node 6.10.0

gem install rails

console
$ gem install rails -v 5.1.0.beta1
ERROR:  While executing gem ... (Gem::DependencyResolutionError)
    conflicting dependencies activesupport (= 3.0.0) and activesupport (= 5.1.0.beta1)
  Activated activesupport-5.1.0.beta1
  which does not match conflicting dependency (= 3.0.0)

  Conflicting dependency chains:
    rails (= 5.1.0.beta1), 5.1.0.beta1 activated, depends on
    activesupport (= 5.1.0.beta1), 5.1.0.beta1 activated

  versus:
    rails (= 5.1.0.beta1), 5.1.0.beta1 activated, depends on
    sprockets-rails (>= 2.0.0), 2.0.0 activated, depends on
    actionpack (>= 3.0), 3.0.0 activated, depends on
    activesupport (= 3.0.0)

Gem::DependencyResolutionErrorが出る👻
下記コマンドでインストール
(cf. Installing pre release gems is giving conflicting dependency errors · Issue #1653 · rubygems/rubygems

console
$ ruby -rbundler/inline -e "gemfile(true) do; source 'https://rubygems.org/'; gem 'rails', '5.1.0.beta1'; end"

$ rails -v
Rails 5.1.0.beta1

ファイル構成

$ rails new rails5-1-0-beta --database=mysql --webpack

上記コマンドで作成したrailsアプリケーションのサンプルは以下

kikunantoka/rails5-1-0-beta1: This is sample app of rails 5.1.0.beta1

rails new で生成される部分はこちら

Execute rails new · kikunantoka/rails5-1-0-beta1@964dbed

package.jsonとyarn.lockが生成されている👍
Gemfileからは gem 'jquery-rails' が消えている

rails s

いつもと変わらない

$ rails db:create
$ rails db:migrate
$ rails s

active_support 5.1.0.beta1がRuby 2.4.0対応したようで、下記warningが出なくなった

/Users/kikunantoka/.anyenv/envs/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated
/Users/kikunantoka/.anyenv/envs/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated

rails5-1-0-beta1-1.png

encrypted secrets機能を試す

$ rails secrets:setup

rails5-1-0-beta1.png

secrets.yml.encsecrets.yml.key が生成される

secrets.ymlには

# Do not keep production secrets in the unencrypted secrets file.
# Instead, either read values from the environment.
# Or, use `bin/rails secrets:setup` to configure encrypted secrets
# and move the `production:` environment over there.

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

と書いてあるので、

$ EDITOR=vim rails secrets:edit

で編集する

1 # See `secrets.yml` for tips on generating suitable keys.
2 # production:
3 #  external_api_key: 1466aac22e6a869134be3d09b9e89232fc2c2289…
4
5 producttion:
6   secret_key_base: generatedsecurerandomhex64

ここに SecureRandom.hex(64) で生成した文字列などを直接書き込む。
Gitで管理されるのは暗号化された secrets.yml.enc なので、ここの文字列は漏れない。
デフォルトのコメントにもあるように、外部サービスのキーなどもここで管理すると良さそう。
CircleCIやProduction環境では、RAILS_MASTER_KEY の環境変数で secrets.yml.key の内容を渡すようだ。

(cf. Rails 5.1 applications can be a lot more secretive on Cloud Foundry and Heroku

終わりに

これからjs周りを試してみる

[2017/02/26] 追記

js周り試してみた

Rails 5.1でreact環境を作ってみた - Qiita