Bienvenido(a) a Proyecto Script

Hola!!!

Este es un buen lugar donde buscar las respuestas a tus dudas sobre "Programación", "Lenguajes", "Linux", "Electrónica", etc.

Suele ser difícil buscar en la red y encontrar respuestas claras y en español a muchas preguntas sobre estos temas, así que aquí tienes un buen lugar para iniciar.

Quieres ser parte de esto, solo ¡regístrate!

domingo, 1 de junio de 2008

Error al generar controlador con Login_Generator en Rails 2.0

Tratando de implementar un sistema de seguridad por logeo en una aplicacion en Rails 2.0, uno de los pasos señala que hay que generar un controlador con la siguiente instrucción:

ruby script/generate login <controlador&rt;

En mi caso lo hice así:

$ ruby script/generate login Security
    create lib/login_system.rb
    create app/controllers/security_controller.rb
    create test/functional/security_controller_test.rb
    create app/helpers/security_helper.rb
    create app/models/user.rb
    create test/unit/user_test.rb
    create test/fixtures/users.yml
No such file or directory - /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml
$


Revisando un poco el directorio para comprobar si realmente ese archivo no existia me di cuenta que si existe, pero con otro nombre:

$ ls -l /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/rails_generator/generators/components/scaffold/templates/
total 40
-rw-r--r-- 1 root root 2464 may 13 23:47 controller.rb
-rw-r--r-- 1 root root 1256 may 13 23:47 functional_test.rb
-rw-r--r-- 1 root root 46 may 13 23:47 helper.rb
-rw-r--r-- 1 root root 495 may 13 23:47 layout.html.erb
-rw-r--r-- 1 root root 1152 may 13 23:47 style.css
-rw-r--r-- 1 root root 463 may 13 23:47 view_edit.html.erb
-rw-r--r-- 1 root root 697 may 13 23:47 view_index.html.erb
-rw-r--r-- 1 root root 411 may 13 23:47 view_new.html.erb
-rw-r--r-- 1 root root 285 may 13 23:47 view_show.html.erb
$


Y como podemos ver si existe pero con la convención de nombres de la versión de Rails 2.0 (la cual es .html.erb) y no con la versión 1.2 (la cual es .rhtml).

Así que solo basta con hacer una copia del archivo con el nombre de la versión 2.0 a uno con el nombre de la versión 1.2:

$ cp layout.html.erb layout.rhtml

De esta manera ya existirá:

$ ls -l /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/rails_generator/generators/components/scaffold/templates/
total 40
-rw-r--r-- 1 root root 2464 may 13 23:47 controller.rb
-rw-r--r-- 1 root root 1256 may 13 23:47 functional_test.rb
-rw-r--r-- 1 root root 46 may 13 23:47 helper.rb
-rw-r--r-- 1 root root 495 may 13 23:47 layout.html.erb
-rw-r--r-- 1 root root 495 jun 1 15:38 layout.rhtml
-rw-r--r-- 1 root root 1152 may 13 23:47 style.css
-rw-r--r-- 1 root root 463 may 13 23:47 view_edit.html.erb
-rw-r--r-- 1 root root 697 may 13 23:47 view_index.html.erb
-rw-r--r-- 1 root root 411 may 13 23:47 view_new.html.erb
-rw-r--r-- 1 root root 285 may 13 23:47 view_show.html.erb
$


Y con esto ya podremos seguir con la creacion del controlador (en mi caso aquí esta el ejemplo):

$ ruby script/generate login Security
identical lib/login_system.rb
identical app/controllers/security_controller.rb
identical test/functional/security_controller_test.rb
identical app/helpers/security_helper.rb
identical app/models/user.rb
identical test/unit/user_test.rb
identical test/fixtures/users.yml
overwrite app/views/layouts/scaffold.rhtml? (enter "h" for help) [Ynaqdh]
Y - yes, overwrite
n - no, do not overwrite
a - all, overwrite this and all others
q - quit, abort
d - diff, show the differences between the old and the new
h - help, show this help
overwrite app/views/layouts/scaffold.rhtml? (enter "h" for help) [Ynaqdh] Y
    force app/views/layouts/scaffold.rhtml
    identical public/stylesheets/scaffold.css
    create app/views/security
    create app/views/security/welcome.rhtml
    create app/views/security/login.rhtml
    create app/views/security/logout.rhtml
    create app/views/security/signup.rhtml
    create README_LOGIN
$


Digg!

4 comentarios:

JorgeLuis dijo...

hola yo tengo un problema. yo ya instale ruby, gem, rails. y estoy siguiendo los pasos de este manual: http://sobrerailes.com/pages

pero al llegar al paso donde tengo que crear un controller. yo escribo en la terminal:
C:\rails\recetario\app\controllers> ruby script\generate controller miprueba

y esta me da este mensaje: ruby: No Such file or directory -- script/generate (LoadError)

alguien sabe como solucionar esto.

I Need you Help...
Please help me

JorgelUis dijo...

por favor si alguien sabe de este error. por favor enviarme alguna ayuda a mi correo jorgetareas07@hotmail.com

Jorgeluis dijo...

hola ya pude solucionar este problema. pero tengo otro XD...

bueno es esto, cuando me voy a http://127.0.0.1:3000/Mi_Prueba/ me aparece este mensaje ROUTING ERROR no route matches "Mi_Prueba" with {method=>get}

A que se debera esto?? si alguien sabe por favor digame... mi correo es jorgetareas07@hotmail.com

NeoRiddle dijo...

Primero que nada dejame recordarte que en Rails -al igual que en Ruby- se manejan convenciones en lugar de configuraciones, en este caso si tu controlador es "Mi_Prueba", viola con la convención de que se escribe en minusculas y en plural seguido de "_controller", por ejemplo "students_controller", y si no sigues estas convenciones entonces deberías gastar unas lineas especificando eso.

En segunda si te das cuenta en tu archivo routes.rb por default hay las siguientes lineas:

map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'

Estas lineas especifican que ese será el formato que tomaras para tus urls, si no serán asi, te sugiero que pongas el formato que necesitas.