LoginSignup
1
0

More than 5 years have passed since last update.

Rails Heroku 本番環境のみで Deviseのカスタムviewが反映されない

Posted at

TL;DR;

悲劇は突然に
簡易的なアプリケーションを作成しており、ある程度、主幹機能は作り終えた。そこで、サクッとデプロイしてしまおうと思い、デプロイした。
これは、とある駆け出しプログラマーの失敗記録である。

結論を言うと、

group :development, :test do
  slim-rails
end

となっており、 slimがproductionで読まれなくなっていた と言うことでした。
これでなるほどとなる方は、この記事は読み飛ばして大丈夫です。
その他の人に向けて、少し、解説と、自分への戒めを残しておきたいと思います。

(突っ込みたい部分はたくさんあると思いますが、大目に見てくれると嬉しいです)

環境

- Rails 5.2.1
- Ruby 2.5.1
- mysql5.7
- heroku
- slim-rails
- devise( `新規登録の部分のview ファイル` をカスタマイズしている)

いつものように、 heroku create から、 git push heroku master の流れを順調に終えた。無事デプロイは完了したかのように思えた。

そこで、
確認のため、試しに新規登録のページを開いて見た。

ない、ない。。。。追加したはずの nickname の部分のフォームがない!!!

そう、 development環境では確かに存在していたはずのフォームが本番環境では反映されていないという状態であった。

試行錯誤

1. custom したコントローラが読まれていないのかどうか。

最初、自分はこの部分を疑った。しかしながら、サーバーログを見ると、
きちんと、
Users::RegistrationsController
と書いてあり、大丈夫そうだ。

一応、調べて見ると、意外とたくさんの記事がヒットし、同じような悩みを抱えている人も多いんだなと思いながら、色々試して見た。

1-1. config/routes.rbの記述を変更する。

これは正直効果無いだろうと思いながらも、藁にもすがる思いで試した。
具体的には、

config/routes.rb
  devise_for :users, controllers: {
    registrations: 'users/registrations'
  } 

このように変更するものである。
しかしながら、ログを見る限りでは、きちんと該当のコントローラが呼ばれているようだったので、あえなく失敗した。

1-2. config/initializers/devise.rbの設定を変更する。

こちらは Github の DeviseのIssue に上がっていたものを参考にした。

config/initializers/devise.rb
  config.scoped_views = true

このように変更したが、何も起こらず、なすすべなく、途方に暮れてしまった。

2. viewの呼び出しがおかしいのか

viewの呼び出しがおかしいと言っても、判断するすべを自分は持っておらず、かなり苦戦した。
(だって、ローカルでは読まれているんだもん)

何もやることがないので、仕方なく、サーバーログを見ていると、

2018-08-17T07:01:55.395701+00:00 app[web.1]: [c9457b96-3fee-484c-a808-770f595ac942] Started GET "/users/sign_up" for 111.239.172.198 at 2018-08-17 07:01:55 +0000
2018-08-17T07:01:55.401814+00:00 app[web.1]: [c9457b96-3fee-484c-a808-770f595ac942] Processing by Users::RegistrationsController#new as HTML
2018-08-17T07:01:55.403845+00:00 app[web.1]: [c9457b96-3fee-484c-a808-770f595ac942]   Rendering vendor/bundle/ruby/2.5.0/gems/devise-4.4.3/app/views/devise/registrations/new.html.erb
2018-08-17T07:01:55.456650+00:00 app[web.1]: [c9457b96-3fee-484c-a808-770f595ac942]   Rendered vendor/bundle/ruby/2.5.0/gems/devise-4.4.3/app/views/devise/shared/_links.html.erb (0.3ms)
2018-08-17T07:01:55.456729+00:00 app[web.1]: [c9457b96-3fee-484c-a808-770f595ac942]   Rendered vendor/bundle/ruby/2.5.0/gems/devise-4.4.3/app/views/devise/registrations/new.html.erb (52.8ms)

あれ、 .erb ??? .slim じゃないことに少しの違和感を覚えた。
そこで、

gem 'slim-rails` # prod, dev, test 全てで読まれるように変更

してから、再度デプロイし直すと、反映された!!!

結論

  1. Gemfileの記述(特にgroup)には注意しよう。
  2. MarkUp系のGemは詰まると発見しにくい。

以上、もし、今後詰まる方がいたら、参考にして見てください。

補足

これに気が付いた経緯として、半年以上前、友人が rspec によるテストが通らないと言う経験が生きた。
ただ topページを表示するためのテスト なのだが、テストだけが通らないと言う状況でした。
この時にも原因だったのは、

group :development do
  gem 'haml-rails'
end

となっていたからであった。 やはり、環境の指定には気をつけるべきである。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0