Rails5セットアップしてみました
Rails5が気になってきたので、ちょっとだけ試してみました。 デフォルトのWeb ServerがWEBrickからPumaになっていて「初動が爆速になったな」という印象を受けました。 (開発中のプロジェクトがモジュール多すぎて、起動が遅いというのもありますが...)
環境
OS: OSX EL Capitan 10.11.4 Ruby: 2.4.0-preview1 Ruby on Rails: 5.0.0.rc1
やること
- Rails5をインストール
- 動作確認
- slimを使いたい
参考リンク集
- Rails 5(beta) を使ってみた(前編)
- 後編がない。ウケるw
Rails5をインストール
rubyをインストール
- せっかくなので最新の2.4.0を投入。previewって書いてあるけど気にしない!
rbenv install -l rbenv install 2.3.1 #=> Downloading ruby-2.3.1.tar.bz2... #=> -> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2 #=> Installing ruby-2.3.1.. rbenv install 2.4.0-preview1
Bundlerをインストールする
- rubyの新しいバージョンをインストールしているので、bundlerもインストールしましょう。
- 既存のプロジェクトに影響を与えたくないので、適当なディレクトリに作っています。
mkdir xxxxx cd $_ rbenv local 2.4.0-preview1 gem install bundler bundler init
Railsのバージョンを探す
- インストールするために、最新のバージョンを確認します。
5.0.0.rc1
を選択することにします。(記事作成時点では、slim-railsが5.0.0.rc2に対応していなかったため)
# railsを探す gem search -ar --prerelease ^rails$ *** REMOTE GEMS *** rails (5.0.0.rc2, 5.0.0.rc1, 5.0.0.racecar1, 5.0.0.beta4, 5.0.0.beta3, 5.0.0.beta2, 5.0.0.beta1.1, 5.0.0.beta1, 4.2.6, 4.2.6.rc1, 4.2.5.2, 4.2.5.1, 4.2.5, 4.2.5.rc2, 4.2.5.rc1, 4.2.4, 4.2.4.rc1, 4.2.3, 4.2.3.rc1, 4.2.2, 4.2.1, 4.2.1.rc4, 4.2.1.rc3, 4.2.1.rc2, 4.2.1.rc1, 4.2.0, 4.2.0.rc3, 4.2.0.rc2, 4.2.0.rc1, 4.2.0.beta4, 4.2.0.beta3, 4.2.0.beta2, 4.2.0.beta1, 4.1.15, 4.1.15.rc1, 4.1.14.2, 4.1.14.1, 4.1.14, 4.1.14.rc2, 4.1.14.rc1, 4.1.13, 4.1.13.rc1, 4.1.12, 4.1.12.rc1, 4.1.11, 4.1.10, 4.1.10.rc4, 4.1.10.rc3, 4.1.10.rc2, 4.1.10.rc1, 4.1.9, 4.1.9.rc1, 4.1.8, 4.1.7.1, 4.1.7, 4.1.6, 4.1.6.rc2, 4.1.6.rc1, 4.1.5, 4.1.4, 4.1.3, 4.1.2, 4.1.2.rc3, 4.1.2.rc2, 4.1.2.rc1, 4.1.1, 4.1.0, 4.1.0.rc2, 4.1.0.rc1, 4.1.0.beta2, 4.1.0.beta1, 4.0.13, 4.0.13.rc1, 4.0.12, 4.0.11.1, 4.0.11, 4.0.10, 4.0.10.rc2, 4.0.10.rc1, 4.0.9, 4.0.8, 4.0.7, 4.0.6, 4.0.6.rc3, 4.0.6.rc2, 4.0.6.rc1, 4.0.5, 4.0.4, 4.0.4.rc1, 4.0.3, 4.0.2, 4.0.1, 4.0.1.rc4, 4.0.1.rc3, 4.0.1.rc2, 4.0.1.rc1, 4.0.0, 4.0.0.rc2, 4.0.0.rc1, 4.0.0.beta1, 3.2.22.2, 3.2.22.1, 3.2.22, 3.2.21, 3.2.20, 3.2.19, 3.2.18, 3.2.17, 3.2.16, 3.2.15, 3.2.15.rc3, 3.2.15.rc2, 3.2.15.rc1, 3.2.14, 3.2.14.rc2, 3.2.14.rc1, 3.2.13, 3.2.13.rc2, 3.2.13.rc1, 3.2.12, 3.2.11, 3.2.10, 3.2.9, 3.2.9.rc3, 3.2.9.rc2, 3.2.9.rc1, 3.2.8, 3.2.8.rc2, 3.2.8.rc1, 3.2.7, 3.2.7.rc1, 3.2.6, 3.2.5, 3.2.4, 3.2.4.rc1, 3.2.3, 3.2.3.rc2, 3.2.3.rc1, 3.2.2, 3.2.2.rc1, 3.2.1, 3.2.0, 3.2.0.rc2, 3.2.0.rc1, 3.1.12, 3.1.11, 3.1.10, 3.1.9, 3.1.8, 3.1.7, 3.1.6, 3.1.5, 3.1.5.rc1, 3.1.4, 3.1.4.rc1, 3.1.3, 3.1.2, 3.1.2.rc2, 3.1.2.rc1, 3.1.1, 3.1.1.rc3, 3.1.1.rc2, 3.1.1.rc1, 3.1.0, 3.1.0.rc8, 3.1.0.rc6, 3.1.0.rc5, 3.1.0.rc4, 3.1.0.rc3, 3.1.0.rc2, 3.1.0.rc1, 3.1.0.beta1, 3.0.20, 3.0.19, 3.0.18, 3.0.17, 3.0.16, 3.0.15, 3.0.14, 3.0.13, 3.0.13.rc1, 3.0.12, 3.0.12.rc1, 3.0.11, 3.0.10, 3.0.10.rc1, 3.0.9, 3.0.9.rc5, 3.0.9.rc4, 3.0.9.rc3, 3.0.9.rc1, 3.0.8, 3.0.8.rc4, 3.0.8.rc2, 3.0.8.rc1, 3.0.7, 3.0.7.rc2, 3.0.7.rc1, 3.0.6, 3.0.6.rc2, 3.0.6.rc1, 3.0.5, 3.0.5.rc1, 3.0.4, 3.0.4.rc1, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 3.0.0.rc2, 3.0.0.rc, 3.0.0.beta4, 3.0.0.beta3, 3.0.0.beta2, 3.0.0.beta, 2.3.18, 2.3.17, 2.3.16, 2.3.15, 2.3.14, 2.3.12, 2.3.11, 2.3.10, 2.3.9, 2.3.9.pre, 2.3.8, 2.3.8.pre1, 2.3.7, 2.3.6, 2.3.5, 2.3.4, 2.3.3, 2.3.2, 2.2.3, 2.2.2, 2.1.2, 2.1.1, 2.1.0, 2.0.5, 2.0.4, 2.0.2, 2.0.1, 2.0.0, 1.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.6, 1.1.5, 1.1.4, 1.1.3, 1.1.2, 1.1.1, 1.1.0, 1.0.0, 0.14.4, 0.14.3, 0.14.2, 0.14.1, 0.13.1, 0.13.0, 0.12.1, 0.12.0, 0.11.1, 0.11.0, 0.10.1, 0.10.0, 0.9.5, 0.9.4.1, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 0.9.0, 0.8.5, 0.8.0)
Rails5をインストールします。
- Gemfileに記載します。
source "https://rubygems.org" gem "rails", "5.0.0.rc1"
- bundle execします
bundle install --path vendor/bundle
- railsのversionを確認します。
bundle exec rails -v Rails 5.0.0.rc1
- 事が済んだのでGemfileを消しておきます。
rm Gemfile
プロジェクトの作成
bundle exec rails _5.0.0.rc1_ new .
動作確認
- まあ、いつもどおりやってみます。
- Web ServerがPumaになっています。
- いつもより早い気がします。
bundle exec rails s => Booting Puma => Rails 5.0.0.rc2 application starting in development on http://localhost:3000 => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.4.0 (ruby 2.4.0-p-1), codename: Owl Bowl Brawl * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://localhost:3000 Use Ctrl-C to stop
Rails5でslimを使う
- テンプレートエンジンをslimにします。
- 理由は簡単で、慣れてるからです。
gem 'slim-rails
require_relative 'boot' require 'rails/all' Bundler.require(*Rails.groups) module Third class Application < Rails::Application config.generators.template_engine = :slim ## here end end
早速ためしてみる
- まずはScaffoldで適当なモデルを作ります。
rails g scaffold Book name:string auther:string bundle exec rake db:migrate
localhost:3000/books
にアクセス!
ArgumentError (key must be 32 bytes): vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.0.rc2/lib/active_support/message_encryptor.rb:72:in `key=' vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.0.rc2/lib/active_support/message_encryptor.rb:72:in `_encrypt' vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.0.rc2/lib/active_support/message_encryptor.rb:58:in `encrypt_and_sign' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/cookies.rb:592:in `commit' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/cookies.rb:465:in `[]=' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/session/cookie_store.rb:117:in `set_cookie' vendor/bundle/ruby/2.4.0/gems/rack-2.0.0.rc1/lib/rack/session/abstract/id.rb:353:in `commit_session' vendor/bundle/ruby/2.4.0/gems/rack-2.0.0.rc1/lib/rack/session/abstract/id.rb:224:in `context' vendor/bundle/ruby/2.4.0/gems/rack-2.0.0.rc1/lib/rack/session/abstract/id.rb:216:in `call' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/cookies.rb:613:in `call' vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.0.rc2/lib/active_record/migration.rb:552:in `call' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/callbacks.rb:38:in `block in call' vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.0.rc2/lib/active_support/callbacks.rb:97:in `__run_callbacks__' vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.0.rc2/lib/active_support/callbacks.rb:750:in `_run_call_callbacks' vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.0.rc2/lib/active_support/callbacks.rb:90:in `run_callbacks' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/callbacks.rb:36:in `call' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/executor.rb:12:in `call' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/remote_ip.rb:79:in `call' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call' vendor/bundle/ruby/2.4.0/gems/web-console-3.3.0/lib/web_console/middleware.rb:131:in `call_app' vendor/bundle/ruby/2.4.0/gems/web-console-3.3.0/lib/web_console/middleware.rb:28:in `block in call' vendor/bundle/ruby/2.4.0/gems/web-console-3.3.0/lib/web_console/middleware.rb:18:in `catch' vendor/bundle/ruby/2.4.0/gems/web-console-3.3.0/lib/web_console/middleware.rb:18:in `call' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/show_exceptions.rb:31:in `call' vendor/bundle/ruby/2.4.0/gems/railties-5.0.0.rc2/lib/rails/rack/logger.rb:36:in `call_app' vendor/bundle/ruby/2.4.0/gems/railties-5.0.0.rc2/lib/rails/rack/logger.rb:24:in `block in call' vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.0.rc2/lib/active_support/tagged_logging.rb:70:in `block in tagged' vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.0.rc2/lib/active_support/tagged_logging.rb:26:in `tagged' vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.0.rc2/lib/active_support/tagged_logging.rb:70:in `tagged' vendor/bundle/ruby/2.4.0/gems/railties-5.0.0.rc2/lib/rails/rack/logger.rb:24:in `call' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/request_id.rb:24:in `call' vendor/bundle/ruby/2.4.0/gems/rack-2.0.0.rc1/lib/rack/method_override.rb:22:in `call' vendor/bundle/ruby/2.4.0/gems/rack-2.0.0.rc1/lib/rack/runtime.rb:22:in `call' vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.0.rc2/lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/executor.rb:12:in `call' vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/static.rb:136:in `call' vendor/bundle/ruby/2.4.0/gems/rack-2.0.0.rc1/lib/rack/sendfile.rb:111:in `call' vendor/bundle/ruby/2.4.0/gems/railties-5.0.0.rc2/lib/rails/engine.rb:522:in `call' vendor/bundle/ruby/2.4.0/gems/puma-3.4.0/lib/puma/configuration.rb:224:in `call' vendor/bundle/ruby/2.4.0/gems/puma-3.4.0/lib/puma/server.rb:569:in `handle_request' vendor/bundle/ruby/2.4.0/gems/puma-3.4.0/lib/puma/server.rb:406:in `process_client' vendor/bundle/ruby/2.4.0/gems/puma-3.4.0/lib/puma/server.rb:271:in `block in run' vendor/bundle/ruby/2.4.0/gems/puma-3.4.0/lib/puma/thread_pool.rb:114:in `block in spawn_thread' Rendering vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout Rendering vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/templates/rescues/_source.html.erb Rendered vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (1.8ms) Rendering vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb Rendered vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.2ms) Rendering vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb Rendered vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (0.9ms) Rendered vendor/bundle/ruby/2.4.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (56.2ms)
- 秘密鍵は32byteにしろっていうことだろうけど、どこで設定しているのだろうか。
- わからんが、直接設定したら動いた(笑)
- だめだよね。。。解決策を知ってたら教えて下さい。
def initialize(secret, *signature_key_or_options) options = signature_key_or_options.extract_options! sign_secret = signature_key_or_options.first # @secret = secret @secret = "12345678901234567890123456789012" # here @sign_secret = sign_secret @cipher = options[:cipher] || 'aes-256-cbc' @verifier = MessageVerifier.new(@sign_secret || @secret, digest: options[:digest] || 'SHA1', serializer: NullSerializer) @serializer = options[:serializer] || Marshal end