0

この Ruby on Rails の問題は、コードがローカルでは正常に機能するのに、ライブ サーバーにプッシュすると機能しないため、少し厄介です。

移行を使用していくつかの int 列をテーブルに追加し、特定のステータスのアイテムが特定のページに表示されるかどうかを決定するためのいくつかのチェックボックスを持っています。

status\page myitems   featureditems   saleitems
status1        X           x             x    
status2        x           x 

これは開発環境ではローカルで問題なく動作しますが、コードをライブ サーバーにプッシュすると、「新しい機能の追加」ページの読み込みに失敗し、次のエラーが表示されます。

Started GET "/admin/statuses/new" for 86.159.115.236 at 2012-08-19 13:39:12 -0400
Processing by Admin::StatusesController#new as HTML
Rendered shared/_validationerror.html.erb (0.0ms)
Rendered admin/statuses/_form.html.erb (2.1ms)
Rendered admin/statuses/new.html.erb within layouts/application (2.2ms)
Completed 500 Internal Server Error in 4ms

ActionView::Template::Error (undefined method `show_my_items' for #<Status:0xb6c1690>):
20:       </tr>
21: 
22:       <tr>
23:         <td align="center"><%= f.check_box :show_my_items  %></td>
24:         <td align="center"><%= f.check_box :show_latest_items  %></td>
25:         <td align="center"><%= f.check_box :show_featured_items  %></td>
26:         <td align="center"><%= f.check_box :show_search_results  %></td>
app/views/admin/statuses/_form.html.erb:23:in `block in    
_app_views_admin_statuses__form_html_erb__566719799_79558060'
app/views/admin/statuses/_form.html.erb:1:in   
`_app_views_admin_statuses__form_html_erb__566719799_79558060'
app/views/admin/statuses/new.html.erb:7:in 
`_app_views_admin_statuses_new_html_erb__880262090_94647510'
app/controllers/admin/statuses_controller.rb:31:in `new'

この場合、「show_my_items」はステータスに関連付けられたフィールドの 1 つです (page1 で表されます)。

さらに、ライブではチェックボックスを使用してステータスを編集できますが(ただし、intデータ型です...)、ライブでは、編集ページを表示してエラーなしで送信できますが、実際にはフィールドを更新しません。

したがって、列はデータベースに存在し、コードはライブと同じコードですが、エラーはライブサーバーでのみ発生します。両方の Rails の同じバージョン (3.1.0.rc8)、Ruby のバージョンがわずかに異なります (ローカル: 1.9.2p320、ライブ: 1.9.3p194)。

何が起こっているのかわからない...

4

2 に答える 2

4

念のため、本番モードでサーバー上で移行を実行しましたか?

$ RAILS_ENV=production rake db:migrate
于 2012-08-19T20:56:45.920 に答える
1

問題は、Passenger が正しく起動しなかったことにあるようです。思ったよりも時間がかかるか、何かがうまくいかなかったのですが、パッセンジャーを再起動するとうまくいきました。

于 2012-08-21T07:30:28.973 に答える