質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

7212閲覧

railsのproduction環境でのエラー

Mkato

総合スコア118

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1グッド

1クリップ

投稿2015/10/07 17:25

編集2015/10/08 03:39

ruby 2.1.3
Rails 4.2.3
ローカルでのPCはmac
sakuraはVPSのcentos
nginx1.8.0
unicorn
プログラム初心者になります。

現在production環境でサイトの確認を行っているのですがエラーになります。
Logを確認しているのですが、何処らへんを確認すればよいのかご教授頂けると助かります。

production.log

D, [2015-10-08T01:33:07.503470 #30047] DEBUG -- : Keyword Load (0.3ms) SELECT `keywords`.* FROM `keywords` ORDER BY `keywords`.`id` DESC LIMIT 1 D, [2015-10-08T01:33:07.504637 #30047] DEBUG -- : Keyword Load (0.2ms) SELECT `keywords`.* FROM `keywords` ORDER BY `keywords`.`id` DESC LIMIT 8 I, [2015-10-08T01:33:07.626371 #30047] INFO -- : Completed 500 Internal Server Error in 198ms (ActiveRecord: 7.2ms) F, [2015-10-08T01:33:07.631058 #30047] FATAL -- : NoMethodError (undefined method `[]' for nil:NilClass): app/controllers/keyword_controller.rb:11:in `create'

Completed 500 Internal Server ErrorでNoMethodError (undefined method []' for nil:NilClass): 場所はapp/controllers/keyword_controller.rb:11:in create'
との事の様なのですが。。。

app/controllers/keyword_controller.rb
ここにはフォームからキーワードを受け取り保存してamazon apiを使ってサイトを表示させる処理をしています。
簡単に処理を書くと

Keyword.create(create_params) #keywordsのテーブルにキーワードを格納。 その後 @amazonjp = Amazon::Ecs.item_search(@keywords.keyword, #keywordsのキーワードからamazon apiを使って処理 :search_index => 'All', :response_group => 'Large', :country => 'jp')

↑productionのデータベースを確認するとkeywordsテーブルには問題なくキーワードが格納されています。
キーワードの取得でミスってるのかなーと考えたのですが、他のページでは格納したキーワードを表示させてい場所は問題なく表示がされています。

rails c -e production
で@keywords.keywordの確認を行いましたが、値は入っています。

deveropment環境では動きます。
deveropment.log procuctionログと同じ場所

Keyword Load (0.3ms) SELECT `keywords`.* FROM `keywords` ORDER BY `keywords`.`id` DESC LIMIT 1 Keyword Load (0.9ms) SELECT `keywords`.* FROM `keywords` ORDER BY `keywords`.`id` DESC LIMIT 8 Rendered keyword/create.html.erb within layouts/application (65.7ms) Completed 200 OK in 7863ms (Views: 235.7ms | ActiveRecord: 15.2ms)

宜しくお願いします。


追加情報

@amazonjp = Amazon::Ecs.item_search(@keywords.keyword, #keywordsのキーワードからamazon apiを使って処理 :search_index => 'All', :response_group => 'Large', :country => 'jp')

上記のunicorn.logも確認し、amazonへのリクエストURLを確認しました。
リクエストURLを叩くと商品データは入っています。なのでamazonからはデータを取得しているのかと。
エラーの `[]' for nil:NilClassが何処なのか分からない。。。

宜しくお願いします。

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しましたのでご報告です。

以下方法。

config/environments/production.rb

config.eager_load = false

とすると表示されました。
development環境では表示されているのだからと考え違いを確認しながらいくつかテストしながら設定するとうまくいきました。
正解の方法なのか分かりませんが、ひとまず解決出来たのでいいのかなーと。。。

投稿2015/10/09 04:07

Mkato

総合スコア118

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問