我正在做michael hartl关于ruby on rails的教程,一切都在本地工作正常但在应用程序部署时不在heroku上..这个问题出现在本书第7章之前:http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#top
您是否需要调试此问题的详细信息?请让我知道.....
这是heroku日志:
$ 2012-07-18T06:10:26+00:00 app[web.1]: 6: <ul class="nav pull-right">
2012-07-18T06:10:26+00:00 app[web.1]: ActionView::Template::Error (undefined met
hod `find_by_remember_token' for #<Class:0x00000004960740>):
2012-07-18T06:10:26+00:00 app[web.1]: 7: <li><%= link_to "Home", r
oot_path %></li>
2012-07-18T06:10:26+00:00 app[web.1]: 8: <li><%= link_to "Help", h
elp_path %></li>
2012-07-18T06:10:26+00:00 app[web.1]: 9: <% if signed_in? %>
2012-07-18T06:10:26+00:00 app[web.1]: 10: <li><%= link_to "Users
", users_path %></li>
2012-07-18T06:10:26+00:00 app[web.1]: 11: <li id="fat-menu" clas
s="dropdown">
2012-07-18T06:10:26+00:00 app[web.1]: 12: <a href="#" class="d
ropdown-toggle" data-toggle="dropdown">
2012-07-18T06:10:26+00:00 app[web.1]: app/helpers/sessions_helper.rb:10:in `cu
rrent_user'
2012-07-18T06:10:26+00:00 app[web.1]: app/helpers/sessions_helper.rb:23:in `si
gned_in?'
2012-07-18T06:10:26+00:00 app[web.1]: app/views/layouts/application.html.erb:1
1:in `_app_views_layouts_application_html_erb___2533055855927805914_43132200'
2012-07-18T06:10:26+00:00 app[web.1]: app/views/layouts/_header.html.erb:9:in
`_app_views_layouts__header_html_erb__2547305690965663969_41244280'
2012-07-18T06:10:26+00:00 app[web.1]:
2012-07-18T06:10:26+00:00 app[web.1]:
2012-07-18T06:10:26+00:00 heroku[router]: GET whizcollab.herokuapp.com/ dyno=web
.1 queue=0 wait=0ms service=345ms status=500 bytes=643
2012-07-18T06:10:34+00:00 app[web.1]:
2012-07-18T06:10:34+00:00 app[web.1]: Started GET "/" for 115.87.214.246 at 2012
-07-18 06:10:34 +0000
2012-07-18T06:10:34+00:00 app[web.1]:
2012-07-18T06:10:34+00:00 app[web.1]: Processing by StaticPagesController#home a
s HTML
2012-07-18T06:10:34+00:00 app[web.1]: Rendered static_pages/home.html.erb with
in layouts/application (0.6ms)
2012-07-18T06:10:34+00:00 app[web.1]: Rendered layouts/_shim.html.erb (0.0ms)
2012-07-18T06:10:34+00:00 app[web.1]: Rendered layouts/_header.html.erb (1.2ms
)
2012-07-18T06:10:34+00:00 app[web.1]: Completed 500 Internal Server Error in 4ms
2012-07-18T06:10:34+00:00 app[web.1]: ActionView::Template::Error (undefined met
hod `find_by_remember_token' for #<Class:0x00000004960740>):
2012-07-18T06:10:34+00:00 app[web.1]:
2012-07-18T06:10:34+00:00 app[web.1]: 8: <li><%= link_to "Help", h
elp_path %></li>
2012-07-18T06:10:34+00:00 app[web.1]: 9: <% if signed_in? %>
2012-07-18T06:10:34+00:00 app[web.1]: 6: <ul class="nav pull-right">
2012-07-18T06:10:34+00:00 app[web.1]: 10: <li><%= link_to "Users
", users_path %></li>
2012-07-18T06:10:34+00:00 app[web.1]: 7: <li><%= link_to "Home", r
oot_path %></li>
2012-07-18T06:10:34+00:00 app[web.1]: 11: <li id="fat-menu" clas
s="dropdown">
2012-07-18T06:10:34+00:00 app[web.1]: 12: <a href="#" class="d
ropdown-toggle" data-toggle="dropdown">
2012-07-18T06:10:34+00:00 app[web.1]: app/helpers/sessions_helper.rb:10:in `cu
rrent_user'
2012-07-18T06:10:34+00:00 app[web.1]: app/views/layouts/_header.html.erb:9:in
`_app_views_layouts__header_html_erb__2547305690965663969_41244280'
2012-07-18T06:10:34+00:00 app[web.1]: app/helpers/sessions_helper.rb:23:in `si
gned_in?'
2012-07-18T06:10:34+00:00 app[web.1]: app/views/layouts/application.html.erb:1
1:in `_app_views_layouts_application_html_erb___2533055855927805914_43132200'
2012-07-18T06:10:34+00:00 app[web.1]:
2012-07-18T06:10:34+00:00 app[web.1]:
2012-07-18T06:10:34+00:00 heroku[router]: GET whizcollab.herokuapp.com/ dyno=web
.1 queue=0 wait=0ms service=22ms status=500 bytes=643
2012-07-18T06:12:03+00:00 app[web.1]:
2012-07-18T06:12:03+00:00 app[web.1]:
2012-07-18T06:12:03+00:00 app[web.1]: Started GET "/" for 115.87.214.246 at 2012
-07-18 06:12:03 +0000
2012-07-18T06:12:03+00:00 app[web.1]: Processing by StaticPagesController#home a
s HTML
2012-07-18T06:12:03+00:00 app[web.1]: Rendered static_pages/home.html.erb with
in layouts/application (0.7ms)
2012-07-18T06:12:03+00:00 app[web.1]: Rendered layouts/_shim.html.erb (0.0ms)
2012-07-18T06:12:03+00:00 app[web.1]: Completed 500 Internal Server Error in 6ms
2012-07-18T06:12:03+00:00 app[web.1]: Rendered layouts/_header.html.erb (2.3ms
)
2012-07-18T06:12:03+00:00 app[web.1]: ActionView::Template::Error (undefined met
hod `find_by_remember_token' for #<Class:0x00000004960740>):
2012-07-18T06:12:03+00:00 app[web.1]:
2012-07-18T06:12:03+00:00 app[web.1]: 6: <ul class="nav pull-right">
2012-07-18T06:12:03+00:00 app[web.1]: 7: <li><%= link_to "Home", r
oot_path %></li>
2012-07-18T06:12:03+00:00 app[web.1]: 8: <li><%= link_to "Help", h
elp_path %></li>
2012-07-18T06:12:03+00:00 app[web.1]: 9: <% if signed_in? %>
2012-07-18T06:12:03+00:00 app[web.1]: 11: <li id="fat-menu" clas
s="dropdown">
2012-07-18T06:12:03+00:00 app[web.1]: 10: <li><%= link_to "Users
", users_path %></li>
2012-07-18T06:12:03+00:00 app[web.1]: 12: <a href="#" class="d
ropdown-toggle" data-toggle="dropdown">
2012-07-18T06:12:03+00:00 app[web.1]: app/helpers/sessions_helper.rb:10:in `cu
rrent_user'
2012-07-18T06:12:03+00:00 app[web.1]: app/helpers/sessions_helper.rb:23:in `si
gned_in?'
2012-07-18T06:12:03+00:00 app[web.1]: app/views/layouts/_header.html.erb:9:in
`_app_views_layouts__header_html_erb__2547305690965663969_41244280'
2012-07-18T06:12:03+00:00 app[web.1]: app/views/layouts/application.html.erb:1
1:in `_app_views_layouts_application_html_erb___2533055855927805914_43132200'
2012-07-18T06:12:03+00:00 app[web.1]:
2012-07-18T06:12:03+00:00 app[web.1]:
2012-07-18T06:12:03+00:00 heroku[router]: GET whizcollab.herokuapp.com/ dyno=web
.1 queue=0 wait=0ms service=17ms status=500 bytes=643
2012-07-18T06:13:31+00:00 app[web.1]:
2012-07-18T06:13:31+00:00 app[web.1]:
2012-07-18T06:13:31+00:00 app[web.1]: Started GET "/" for 115.87.214.246 at 2012
-07-18 06:13:31 +0000
2012-07-18T06:13:31+00:00 app[web.1]: Processing by StaticPagesController#home a
s HTML
2012-07-18T06:13:31+00:00 app[web.1]: Rendered static_pages/home.html.erb with
in layouts/application (0.4ms)
2012-07-18T06:13:31+00:00 app[web.1]: Rendered layouts/_shim.html.erb (0.0ms)
2012-07-18T06:13:31+00:00 app[web.1]: Rendered layouts/_header.html.erb (1.9ms
)
2012-07-18T06:13:31+00:00 app[web.1]: Completed 500 Internal Server Error in 4ms
2012-07-18T06:13:31+00:00 app[web.1]:
2012-07-18T06:13:31+00:00 app[web.1]: ActionView::Template::Error (undefined met
hod `find_by_remember_token' for #<Class:0x00000004960740>):
2012-07-18T06:13:31+00:00 app[web.1]: 6: <ul class="nav pull-right">
2012-07-18T06:13:31+00:00 app[web.1]: 7: <li><%= link_to "Home", r
oot_path %></li>
2012-07-18T06:13:31+00:00 app[web.1]: 9: <% if signed_in? %>
2012-07-18T06:13:31+00:00 app[web.1]: 11: <li id="fat-menu" clas
s="dropdown">
2012-07-18T06:13:31+00:00 app[web.1]: 10: <li><%= link_to "Users
", users_path %></li>
2012-07-18T06:13:31+00:00 app[web.1]: 8: <li><%= link_to "Help", h
elp_path %></li>
2012-07-18T06:13:31+00:00 app[web.1]: 12: <a href="#" class="d
ropdown-toggle" data-toggle="dropdown">
2012-07-18T06:13:31+00:00 app[web.1]: app/helpers/sessions_helper.rb:10:in `cu
rrent_user'
2012-07-18T06:13:31+00:00 app[web.1]: app/helpers/sessions_helper.rb:23:in `si
gned_in?'
2012-07-18T06:13:31+00:00 app[web.1]: app/views/layouts/application.html.erb:1
1:in `_app_views_layouts_application_html_erb___2533055855927805914_43132200'
2012-07-18T06:13:31+00:00 app[web.1]:
2012-07-18T06:13:31+00:00 app[web.1]: app/views/layouts/_header.html.erb:9:in
`_app_views_layouts__header_html_erb__2547305690965663969_41244280'
2012-07-18T06:13:31+00:00 app[web.1]:
2012-07-18T06:13:31+00:00 heroku[router]: GET whizcollab.herokuapp.com/ dyno=web
.1 queue=0 wait=0ms service=22ms status=500 bytes=643
2012-07-18T06:13:37+00:00 app[web.1]:
2012-07-18T06:13:37+00:00 app[web.1]:
2012-07-18T06:13:37+00:00 app[web.1]: Started GET "/users" for 115.87.214.246 at
2012-07-18 06:13:37 +0000
2012-07-18T06:13:37+00:00 heroku[router]: GET whizcollab.herokuapp.com/users dyn
o=web.1 queue=0 wait=0ms service=47ms status=500 bytes=643
2012-07-18T06:13:37+00:00 app[web.1]: Processing by UsersController#index as HTM
L
2012-07-18T06:13:37+00:00 app[web.1]: Completed 500 Internal Server Error in 1ms
2012-07-18T06:13:37+00:00 app[web.1]:
2012-07-18T06:13:37+00:00 app[web.1]: app/helpers/sessions_helper.rb:10:in `cu
rrent_user'
2012-07-18T06:13:37+00:00 app[web.1]: NoMethodError (undefined method `find_by_r
emember_token' for #<Class:0x00000004960740>):
2012-07-18T06:13:37+00:00 app[web.1]: app/helpers/sessions_helper.rb:23:in `si
gned_in?'
2012-07-18T06:13:37+00:00 app[web.1]: app/controllers/users_controller.rb:48:i
n `signed_in_user'
2012-07-18T06:13:37+00:00 app[web.1]:
2012-07-18T06:13:37+00:00 app[web.1]:
答案 0 :(得分:9)
所以我也在做Hart教程并且正在进入相同的问题。我运行了heroku运行db:migrate ....我确保它是最新的git push heroku ....我在数据库中为我的一个用户添加了一个remember_key。它位于schema.rb文件中。
我终于找到了答案:
user.rb:
将:remember_token添加到attr_accessible
Ex:“attr_accessible:name,:email,:password,:password_confirmation,:remember_token”
由于某些原因,这是在教程之外,即使现在我知道什么是错的,这是有道理的。添加完之后,我再次推送到heroku和Viola ......
希望这会有所帮助:)
答案 1 :(得分:3)
动态查找程序仅在您搜索的属性存在时才有效。您没有运行所有迁移,或者您只是没有该属性(remember_token)或者您拼错了它。
答案 2 :(得分:3)
我有同样的问题,我要说恕我直言,没有必要添加:remember_token
到attr_accessible
字段。这样做会暴露:remember_token
,创建getter和setter,这是必要的,因为:remember_token
必须被视为内部变量。我解决了重新启动Heroku应用程序的问题,如下所示:
heroku-nomethod-error-remember-token
重新启动后,应用程序正常运行,就像在本地执行一样。
答案 3 :(得分:1)
它失败,因为它找不到以下方法find_by_remember_token
的定义。我记得在Hartl教程的remember_token
中定义了session_helper
。似乎在调用signed_in?
方法时出现。
您可以粘贴session_helper.rb
和User
型号代码吗?
答案 4 :(得分:1)
尝试运行heroku restart
。它为我做了伎俩。
应该注意,根据r4m's answer,不建议在:remembered_token
声明中添加attr_accessible
。 (Hartl在教程中没有这样做是有原因的。)
答案 5 :(得分:0)
该行:
ActionView::Template::Error (undefined method `find_by_remember_token' for #<Class:0x00000004960740>):
告诉你Rails不知道'find_by_remember_token'是什么,这意味着它不存在(即它是一个错字),或者通常用于确定类属性的数据库不是'意识到这个领域。
假设它不是拼写错误,那么迁移数据库将是一个选择:
heroku run rake db:migrate
答案 6 :(得分:0)
当我尝试推送到heroku以及亚马逊时,我收到内部服务器错误。在将应用程序推送到服务器之前,我必须预先编译我的资产。如果这是您的问题,最简单的解决方案是运行
RAILS_ENV=production rake assets:precompile
或添加 加载'部署/资产' 如果您使用的是Capistrano,请使用capfile。我被告知你可以将以下内容添加到deploy.rb文件中,但我无法使其正常工作。
after "deploy:restart", "deploy:precompile"
namespace :deploy do
desc "Compile assets"
task :precompile, :roles => :app do
run "cd #{release_path} && rake RAILS_ENV=#{rails_env} assets:precompile"
end
end
答案 7 :(得分:0)
对我来说有用的是完全按照教程中的描述在User模型中定义create_remember_token方法。
private
def create_remember_token
self.remember_token = SecureRandom.urlsafe_base64
end
然后在before_save方法中调用它。
before_save {
self.email.downcase!
create_remember_token
}
之前我没有将它作为方法声明。虽然它在我的计算机上运行,但它在Heroku中失败了。
#this failed in Heroku
before_save {
self.email.downcase!
self.remember_token = SecureRandom.urlsafe_base64
}
此外,运行也没有坏处:
heroku run rake db:migrate