Rails 5.1.0.beta1 試してみた


## Rails 5.1.0.beta1 がリリース 🎉

[Release v5.1.0.beta1 · rails/rails](https://github.com/rails/rails/releases/tag/v5.1.0.beta1)

[Rails 5.1.0.beta1: Loving JavaScript, System Tests, Encrypted Secrets, and more - Riding Rails](http://weblog.rubyonrails.org/2017/2/23/Rails-5-1-beta1/)

## 主な変更点

[Rails 5.1の変更点まとめ - Qiita](http://qiita.com/jnchito/items/b0b47ecfc33de4f9b72f)

## 実行環境

Rails 5.1.0.beta1
Ruby 2.4.0
node 6.10.0

## gem install rails

```console: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](https://github.com/rubygems/rubygems/issues/1653)）

```console: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](https://github.com/kikunantoka/rails5-1-0-beta1)

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

[Execute rails new · kikunantoka/rails5-1-0-beta1@964dbed](https://github.com/kikunantoka/rails5-1-0-beta1/commit/964dbedf8345186973a92f2300c6240b41d9a5bd)

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](https://qiita-image-store.s3.amazonaws.com/0/30233/a62d8d55-c7a9-9483-2122-5e779ceaeead.png "rails5-1-0-beta1-1.png")


## encrypted secrets機能を試す

```
$ rails secrets:setup
```

![rails5-1-0-beta1.png](https://qiita-image-store.s3.amazonaws.com/0/30233/73b81129-4dd2-f30d-7341-95347d25080f.png "rails5-1-0-beta1.png")


`secrets.yml.enc` と `secrets.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](http://www.starkandwayne.com/blog/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](http://qiita.com/kikunantoka/items/54f1859496003b1b1aff)