Railsでdevelopmentのエラー画面をproductionと同じにする
config/environments/development.rb
~~~
consider_all_requests_local = false
~~~
consider_all_requests_local
を false
にするだけ
Rubyの多重代入 ,(カンマ)で区切られた代入の挙動
こんなやつが出てきて挙動が分からず困っていたら多重代入というやつらしい。
a, b = Hoge.moge
多重代入についてまとめます。
左辺が1つで右辺が複数の場合
配列に変換される
a = 1, 2 #=> [1, 2] a #=> [1, 2]
左辺、右辺ともに2つの場合
左辺の各変数に右辺の各要素が代入される
a, b = 1, 2 #=> [1, 2] a #=> 1 b #=> 2
左辺の数が多い場合
左辺の残りにnilが代入される
a, b = 1 #=> 1 a #=> 1 b #=> nil
右辺の数が多い場合
余った要素は無視される
a, b = 1, 2, 3 #=> [1, 2, 3] a #=> 1 b #=> 2
他にも色んなパターンや使い方があるみたいですがこのへんで。。。
herokuでworkerだけをrestartする方法
heroku ps -a myapp
まずはプロセスを確認
$ heroku ps -a myapp === web (Standard-1X): bundle exec puma -C config/puma.rb (1) web.1: up 2017/03/06 00:00:00 +0900 (~ 10h ago) === worker (Standard-1X): bundle exec sidekiq -C config/sidekiq.yml (1) worker.1: up 2017/03/06 00:00:00 +0900 (~ 10h ago)
heroku restart worker.1 -a myapp
プロセスを指定して再起動
$ heroku restart worker.1 -a myapp Restarting worker.1 dynos on ⬢ myapp... done
複数のworkerを同時に再起動する方法
$ heroku ps -a myapp === web (Standard-1X): bundle exec puma -C config/puma.rb (1) web.1: up 2017/03/06 00:00:00 +0900 (~ 10h ago) === worker (Standard-1X): bundle exec sidekiq -C config/sidekiq.yml (3) worker.1: up 2017/03/06 00:00:00 +0900 (~ 10h ago) worker.2: up 2017/03/06 00:00:00 +0900 (~ 10h ago) worker.3: up 2017/03/06 00:00:00 +0900 (~ 10h ago)
複数workerがある場合、下記のようにすれば一括で再起動。
$ heroku restart worker -a myapp Restarting worker dynos on ⬢ myapp... done
constantizeした時にactive_support/inflector/methods.rb:268:in `const_get': uninitialized constant Hoge (NameError)と怒られる問題[Rails]
h = 'Hoge'.constantize h.create(fuga: 'fuga')
した時に
active_support/inflector/methods.rb:268:in `const_get': uninitialized constant Hoge (NameError)
とHogeという定数、クラスがなかったため怒られてしまった。
safe_constantizeで回避
safe_constantizeを使うと存在しなかった場合 nil
が返されます
nilチェックしてから実行して回避
h = 'Hoge'.safe_constantize h.create(fuga: 'fuga') unless h.nil?
rake taskの中断はreturnではなくnextだった[Rails]
task :test do puts 'hoge' return puts 'moge' end
実行する
rake aborted!
LocalJumpError: unexpected return
怒られた…
rake taskの中断はreturnじゃなくてnextとのこと
task :test do puts 'hoge' next puts 'moge' end
以下の場合はreturnとのこと
task :foo do do_something end def do_something puts "startd" return puts "end" end
http://stackoverflow.com/questions/2316475/how-do-i-return-early-from-a-rake-task