2012-07-18 110 views
7

我正在为rails上的ruby做一些michael hartl的教程,当应用程序部署时一切工作正常,但不在heroku上。本书的第7章:http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#topRuby on rails应用程序在本地工作,但不能在heroku上工作

有没有你需要调试这个问题的任何细节?请让我知道.....

这里是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]: 
+1

您可以从输出Heroku上发生的事情开始,并且会发生什么。 – 2012-07-18 05:54:37

+0

herokuapp只在所有页面上显示此错误“我们很抱歉,但出错了。” – ShivvyBee 2012-07-18 06:13:54

+0

运行'heroku日志'。 – 2012-07-18 06:14:40

回答

9

所以我也在做哈特教程,并进入同样的问题。我运行了heroku run db:migrate ....我确信它是最新的git push heroku ....我在数据库中为我的一个用户添加了一个remember_key。它在schema.rb文件中。

我终于找到了答案:

user.rb:

地址:remember_token到attr_accessible

例: “attr_accessible:姓名,:电子邮件:密码:password_confirmation,:remember_token”

由于某些原因,本教程未将其列出,尽管现在我知道最新的错误是否合理。添加后,我重新推到heroku和中提琴......

希望这有助于:)

+3

我才意识到,我的回答是Teoulas的评论的复杂版“或者你根本就没有这个属性” - 信贷,信贷是当之无愧:) – 2012-12-11 20:08:30

1

它,因为它没有找到下面的方法find_by_remember_token的定义失败。我记得在Hartl教程的session_helper中定义了remember_token。这似乎是在调用signed_in?方法时出现的。

您能否粘贴session_helper.rbUser型号代码?

3

只有当您搜索的属性存在时,动态查找程序才有效。要么你没有运行所有的迁移,或者你根本没有该属性(remember_token)或者拼错了它。

0

行:

ActionView::Template::Error (undefined method `find_by_remember_token' for #<Class:0x00000004960740>): 

是告诉你,Rails不知道什么是“find_by_remember_token”是的,这意味着它不存在(即它是一个错字),或数据库,它通常用于确定类属性,不知道此字段。

假设它不是一个错字,然后迁移数据库将是一种选择:

heroku run rake db:migrate 
0

我得到当我试图推到Heroku的同时也亚马逊内部服务器错误。在将应用推送到服务器之前,我必须预先编译我的资产。如果这是你的问题最简单的解决办法是运行

RAILS_ENV=production rake assets:precompile 

或添加 负载“部署/资产” 到capfile,如果您使用Capistrano的。我被告知可以将以下内容添加到您的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 
0

什么工作对我来说是准确定义为在本教程中介绍的用户模型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 
3

我有同样的问题,我已经说,恕我直言,这是没有必要:remember_token 添加到attr_accessible领域。这样做会暴露:remember_token,创建获取者和设置者,这是不必要的,因为:remember_token必须被视为内部变量。我解决了重新启动的Heroku应用程序的问题,因为在这里证实:

heroku-nomethod-error-remember-token

重新启动应用程序是正常工作,因为它是本地后做。

+2

这工作出色的我,谢谢你! (我同意你不应该暴露你的':remember_token',应该指出这不是Hartl的错误/遗漏。) – wikichen 2013-04-07 00:25:31

+1

只要运行'heroku restart' – Marina 2014-01-08 17:37:46

1

尝试运行heroku restart。它为我做了诡计。

应该注意的是,根据r4m's answer,不建议将:remembered_token添加到您的attr_accessible声明中。 (Hartl在教程中没有这样做的原因。)

相关问题