2012-07-18 30 views
7

Tôi đang làm hướng dẫn của michael hartl cho ruby ​​trên đường ray và mọi thứ hoạt động tốt tại địa phương nhưng không phải trên heroku khi ứng dụng triển khai .. vấn đề này phát sinh trước chương 7 của cuốn sách này : http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#topRuby on rails app hoạt động cục bộ nhưng không hoạt động trên heroku

có bất kỳ chi tiết nào bạn cần để gỡ lỗi sự cố này không? xin vui lòng cho tôi biết .....

đây là các bản ghi 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

Bạn có thể bắt đầu bằng cách xuất ra những gì xảy ra trên Heroku và điều gì sẽ xảy ra. –

+0

herokuapp chỉ hiển thị lỗi này trên tất cả các trang "Chúng tôi xin lỗi, nhưng đã xảy ra sự cố". – ShivvyBee

+0

Chạy 'nhật ký heroku'. –

Trả lời

9

Vì vậy, tôi cũng đã làm Hướng dẫn Hart và đã được đưa vào vấn đề CÙNG. Tôi chạy db chạy heroku: di chuyển .... tôi đã chắc chắn rằng nó đã được cập nhật với git push heroku .... Tôi đã thêm một mem_key vào một người dùng của tôi trong cơ sở dữ liệu. Nó nằm trong tệp schema.rb.

cuối cùng tôi đã tìm thấy câu trả lời:

user.rb:

add: remember_token để attr_accessible

Ex: "attr_accessible: tên,: email,: mật khẩu,: password_confirmation,: remember_token"

Vì một lý do nào đó, điều này bị bỏ qua trong hướng dẫn, mặc dù bây giờ tôi biết điều gì sai trái có ý nghĩa. Sau khi thêm cái này, tôi lại bị đẩy đến heroku và Viola ....

Hope this helps :)

+3

Tôi chỉ nhận ra rằng câu trả lời của tôi là phiên bản phức tạp của nhận xét của Teoulas "hoặc bạn chỉ đơn giản là không có thuộc tính đó" - tín dụng nơi tín dụng được xứng đáng :) –

1

Nó thất bại bởi vì nó không tìm thấy định nghĩa của phương pháp sau đây find_by_remember_token. Tôi nhớ rằng remember_token được xác định trong session_helper trong hướng dẫn Hartl. Nó dường như phát sinh khi phương thức signed_in? được gọi.

Bạn có thể dán mã số session_helper.rbUser không?

3

Trình tìm kiếm động chỉ hoạt động nếu thuộc tính bạn đang tìm kiếm tồn tại. Hoặc bạn không chạy tất cả các di chuyển hoặc bạn chỉ đơn giản là không có thuộc tính đó (remember_token) hoặc bạn đã viết sai chính tả nó.

0

Dòng:

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

đang nói với bạn rằng Rails không biết gì 'find_by_remember_token' là, có nghĩa là nó, hoặc không tồn tại (tức là nó là một lỗi đánh máy), hoặc cơ sở dữ liệu, thường được sử dụng để xác định các thuộc tính lớp, không nhận thức được trường này.

Giả sử nó không phải là một lỗi đánh máy, sau đó di cư cơ sở dữ liệu của bạn sẽ là một lựa chọn:

heroku run rake db:migrate 
0

tôi đã nhận được báo lỗi máy chủ nội bộ khi tôi cố gắng đẩy để Heroku và cũng để amazon. Tôi đã phải biên dịch trước tài sản của mình trước khi đẩy ứng dụng lên máy chủ. Nếu đây là vấn đề của bạn là giải pháp đơn giản nhất là để chạy

RAILS_ENV=production rake assets:precompile 

hoặc thêm tải 'triển khai/tài sản' đến capfile, nếu bạn đang sử dụng Capistrano. Tôi đã nói với bạn có thể thêm những điều sau đây vào tập tin deploy.rb của bạn, nhưng tôi đã không thể làm cho nó hoạt động.

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

gì làm việc đối với tôi là xác định phương pháp create_remember_token trong mô hình tài chính xác như được mô tả trong hướng dẫn.

private 
def create_remember_token 
    self.remember_token = SecureRandom.urlsafe_base64 
end 

Và sau đó gọi nó theo phương pháp before_save.

before_save { 
    self.email.downcase! 
    create_remember_token 
} 

Tôi không có nó như một tuyên bố phương pháp trước đây. Và trong khi nó hoạt động trên máy tính của tôi, nó đã thất bại trong Heroku.

#this failed in Heroku  
before_save { 
    self.email.downcase! 
    self.remember_token = SecureRandom.urlsafe_base64 
} 

Ngoài ra, nó sẽ không gây hại để chạy:

heroku run rake db:migrate 
3

tôi đã cùng một vấn đề và tôi đã nói rằng IMHO nó không phải là cần thiết để thêm :remember_token đến lĩnh vực attr_accessible. Làm như vậy, bạn để lộ :remember_token, tạo getters và setters, điều này là không cần thiết vì :remember_token phải được coi là biến nội bộ. Tôi giải quyết vấn đề khởi động lại ứng dụng Heroku, như khẳng định đây:

heroku-nomethod-error-remember-token

Sau khi khởi động lại ứng dụng đang làm việc một cách chính xác, vì nó được làm tại địa phương.

+2

tôi, cảm ơn bạn! (Và tôi đồng ý rằng bạn không nên để lộ ': remember_token'. Nó sẽ được chỉ ra rằng nó không phải là lỗi/thiếu sót trên phần của Hartl.) – wikichen

+1

chỉ cần chạy' heroku restart' – Marina

1

Thử chạy heroku restart. Nó đã làm cho các trick cho tôi.

Cần lưu ý rằng việc thêm :remembered_token vào tuyên bố attr_accessible của bạn không được khuyến nghị, theo r4m's answer. (Có một lý do khiến Hartl không làm điều đó trong hướng dẫn này.)

Các vấn đề liên quan