Railsをローカル開発環境でproduction環境を動かしてみる

Railsをローカル開発環境でproduction環境を動かしてみました

database.ymlを書いてなければ追記

$ vim config/database.yml

production:
    adapter: postgresql
    encoding: utf8
    reconnect: false
    database: production
    pool: 5
    username: user
    password: password
    host: localhost

各自の環境に合わせてください

$ rake db:create RAILS_ENV=production
$ rake db:migrate RAILS_ENV=production

データベースができあがり

$ config/environments/production.rb

config.serve_static_assets = true

にしておいて、JSとCSSを読み込めるようにします

secret_key_baseを確認

$ vim config/secrets.yml

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

SECRET_KEY_BASEの環境変数が必要でした

rails起動

$ SECRET_KEY_BASE=abcdefg rails s -b 0.0.0.0 -e production

これで確認できました

vagrantでCPUが100%に張り付く2

vagrantでCPUが100%に張り付く | bgbgbgで対策したと思ったけど、
だめだったので再度検討
Rails起動してるのが悪かったのかも

ここを参考に
cpu usage too high · Issue #2 · DanThiffault/rails-lastmile

unicorn使ってないけど試しに

developmentだけ、gemを追加

$ vim Gemfile

  gem "execjs"
  gem "therubyracer"

$ bundle install

これで落ち着きました(もう大丈夫だろうか)

railsのbetter_errorsがvagrant環境で動かない

railsのエラーが見やすくなるgemのbetter_errorsをいれてましたが、エラー画面がふつうで変わってなかった..

charliesome/better_errors
ちゃんと書いてありました
localhostでしか動かないようで、回避策

開発環境の設定を追加
$ vim config/environments/development.rb

  BetterErrors::Middleware.allow_ip! ENV['TRUSTED_IP'] if ENV['TRUSTED_IP']

これで起動時に

$ TRUSTED_IP=(vagrantのIPアドレス) rails s -b 0.0.0.0

で動くようになります
vagrantのIPアドレスはエラー画面で確認しました

rails-bettererrors

この場合は
$ TRUSTED_IP=10.0.2.2 rails s -b 0.0.0.0
でOKです

Railsでのfind_all_byとwhere

RailsでSampleモデルをつくって、ActiveRecordを継承してると

Sample.all

で全レコード取れたりします

Sample.find_all_by_flag(true)

とかすればflagフィールドがtrueのものが複数取れましたが、これはRails4からはないようです
find_all_by – リファレンス – – Railsドキュメント

Rails4ではwhereで代替らしいので

Sample.where(flag: true)

で同じものがとれます