2012-07-18 30 views
7

Estoy haciendo el tutorial de michael hartl para ruby ​​on rails y todo funciona bien localmente pero no en heroku cuando se despliega la aplicación .. este problema surge antes del capítulo 7 de este libro : http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#topLa aplicación Ruby on rails funciona localmente pero no funciona en heroku

¿hay algún detalle que deba solucionar este problema? por favor hágamelo saber .....

aquí son los registros de 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

Puede comenzar dando salida a lo que sucede en Heroku, y lo que debería suceder. –

+0

herokuapp solo muestra este error en todas las páginas "Lo sentimos, pero algo salió mal". – ShivvyBee

+0

Ejecuta 'registros heroku'. –

Respuesta

9

Así que yo también estaba haciendo el tutorial Hart y estaba llegando al MISMO problema. Ejecuté heroku run db: migrate ... me aseguré de que estuviera actualizado con git push heroku .... Agregué una remember_key a mi único usuario en la base de datos. Estaba en el archivo schema.rb.

fin encontré la respuesta:

user.rb:

complemento: remember_token a attr_accessible

Ex: "attr_accessible: nombre,: correo electrónico, Contraseña,: password_confirmation,: remember_token"

Por alguna razón, esto queda fuera del tutorial, aunque ahora que sé lo que está mal tiene sentido. Después de agregar esto volví a presionar a Heroku y Viola ...

Espero que esto ayude :)

+3

Me acabo de dar cuenta de que mi respuesta es la versión complicada del comentario de Teoulas "o simplemente no tiene ese atributo" - crédito donde merecen crédito :) –

1

como un error porque no encuentra la definición del método find_by_remember_token siguiente. Recuerdo que remember_token se define en el session_helper en el tutorial de Hartl. Parece surgir cuando se llama al método signed_in?.

¿Podría pegar el código de modelo session_helper.rb y User?

3

Los buscadores dinámicos solo funcionan si existe el atributo que está buscando. O no ejecutó todas las migraciones o simplemente no tiene ese atributo (remember_token) o lo escribió mal.

0

La línea:

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

le está diciendo que los carriles no se sabe qué 'find_by_remember_token' es, lo que significa que, o bien no existe (es decir, se trata de un error tipográfico), o que la base de datos, que generalmente se usa para determinar las propiedades de clase, no tiene conocimiento de este campo.

Suponiendo que no es un error tipográfico, a continuación, migrar su base de datos sería una opción:

heroku run rake db:migrate 
0

que estaba recibiendo el error interno del servidor cuando traté de empujar a heroku y también para Amazon. Tuve que precompilar mis activos antes de enviar la aplicación al servidor. Si este es su problema la solución más fácil era correr

RAILS_ENV=production rake assets:precompile 

o añadir carga '/ desplegar los activos de los a la capfile, si está utilizando Capistrano. Me dijeron que puede agregar lo siguiente a su archivo deploy.rb, pero no pude hacerlo funcionar.

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

Lo que funcionó para mí fue definir el método create_remember_token en el modelo de usuario exactamente como se describe en el tutorial.

private 
def create_remember_token 
    self.remember_token = SecureRandom.urlsafe_base64 
end 

Y entonces llamándolo en el método before_save.

before_save { 
    self.email.downcase! 
    create_remember_token 
} 

No lo tenía como declaración de método antes. Y mientras funcionaba en mi computadora, falló en Heroku.

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

Además, sería no hacer daño a ejecutar:

heroku run rake db:migrate 
3

que tenían el mismo problema y tengo que decir que en mi humilde opinión, no es necesario añadir :remember_token al campo attr_accessible. Al hacerlo, expone el :remember_token, creando getters y setters, que no es necesario ya que :remember_token tiene que considerarse como una variable interna. He resuelto el problema a reiniciar la aplicación Heroku, como se confirma aquí:

heroku-nomethod-error-remember-token

Después de reiniciar la aplicación funcionaba correctamente, como lo estaba haciendo a nivel local.

+2

Esto funcionó de manera brillante yo, gracias! (Y estoy de acuerdo en que no debe exponer su ': remember_token'. Debe señalarse que no es un error/omisión por parte de Hartl.) – wikichen

+1

acaba de ejecutar' heroku restart' – Marina

1

Intenta ejecutar heroku restart. Me hizo el truco.

Cabe señalar que no se recomienda agregar :remembered_token a su declaración attr_accessible, según r4m's answer. (Hay una razón por la que Hartl no hizo eso en el tutorial.)

Cuestiones relacionadas