tutorial rails que ejemplos descargar curso caracteristicas ruby-on-rails ruby-on-rails-4

ruby on rails - que - Los comandos ''rails generate'' se cuelgan al intentar crear un modelo



ruby on rails tutorial (4)

Soy nuevo en los rieles y esta mañana decidí volcar todo el diseño / modelo de mi base de datos y comenzar de nuevo. Y siendo un novato, estoy seguro de que lo hizo incorrectamente.

Eliminé todos los archivos en db/migrate/ y solté las tablas. Y cuando intenté generar la primera clase de modelo nuevo, los rieles simplemente se colgaron. Apagado en la maleza durante 10 minutos antes de presionar ^ C e intentar otra cosa.

Esta vez, dejé caer las tablas nuevamente, moví todo el proyecto a project.bad y ejecuté rieles nuevos para comenzar de nuevo. Una vez más, después de generar el nuevo proyecto con el nombre anterior, se colgó en el comando de rails generate (estaba usando el mismo nombre de proyecto).

Desesperado, intenté crear un nuevo proyecto en la misma raíz, pero con otro nombre. Eureka! Esto funcionó como un campeón, creando controladores y clases de modelos, pero no puedo generar nada usando el nombre del proyecto original, en el proyecto original o en uno recién creado. ¿Qué me estoy perdiendo para que esto vuelva a funcionar? No me importa una pérdida completa en este momento, ¡pero me gustaría poder usar el nombre del proyecto original nuevamente!

Así es como se ve log / development.log:

(255.5ms) CREATE TABLE `schema_migrations` (`version` varchar(255) NOT NULL) ENGINE=InnoDB (337.7ms) CREATE UNIQUE INDEX `unique_schema_migrations` ON `schema_migrations` (`version`) ActiveRecord::SchemaMigration Load (0.2ms) SELECT `schema_migrations`.* FROM `schema_migrations` (0.2ms) SELECT `schema_migrations`.`version` FROM `schema_migrations`

¿Alguna idea de lo que se supone que sucederá después de ese último SELECT?


En Rails 5, los binstups se crean usando el comando rails .

Simplemente eliminé la carpeta bin y luego ejecuté la rails app:update:bin que solucionó mis problemas.

En Rails 5, el directorio bin / de su aplicación contiene ejecutables que se versionan como cualquier otro código fuente, en lugar de stubs que se generan a pedido.

Aquí se explica cómo actualizar:

bundle config --delete bin # Turn off Bundler''s stub generator rails app:update:bin # Use the new Rails 5 executables git add bin # Add bin/ to source control


Encontré esto en http://www.dixis.com/?p=754

Para uno de mis proyectos, estoy usando los rieles 4.1 (¡sangriento! Sí :)) y de repente me di cuenta de que, después de abrir mi computadora portátil por la mañana, mis comandos normales de rieles

$> rails c $> rails g migration Bla name description some_more_fields

solo ... estaban colgando y no pasó nada ??? Como si estuvieran esperando más aportes. Tras una investigación más cercana, asumí que la conexión con el proceso de primavera se perdió / corrompió (¿me muevo mucho entre redes? Tal vez eso podría explicarlo).

Para aquellos que no lo sabían, como era yo, spring es un precargador de aplicaciones Rails. Acelera el desarrollo al mantener su aplicación ejecutándose en segundo plano, por lo que no necesita iniciarla cada vez que ejecuta una prueba, tarea de rastrillo o migración. Por supuesto, cuando esa conexión se pierde o se corrompe, se cuelga.

Un simple

$> spring stop

detiene el servidor de Spring, después de lo cual cualquier comando de rails lo reiniciará automáticamente. Fijo :)


Si sus rails generate comandos bloqueados, es muy probable que los binstubs generados de los rieles sean el problema. Como mencionó, cambió el nombre del proyecto.

Mi conjetura es que algunas rutas en los binstubs todavía estaban configuradas en el antiguo directorio del proyecto, pero ya no existían.

Aquí hay un gran artículo sobre cómo funcionan los binstubs: https://github.com/sstephenson/rbenv/wiki/Understanding-binstubs

rieles 4

Para restablecer los binstubs, simplemente elimine su directorio bin/ en rieles y ejecute:

# generates binstubs for ALL gems in the bundle bundle install --binstubs # ...OR, generate binstubs for a SINGLE gem (recommended) bundle binstubs rake

rieles 5 / rieles 6

Para restablecer los binstubs, simplemente elimine su directorio bin/ en rieles y ejecute:

rake app:update:bin

¿Por qué necesitamos usar el comando ''rake'' para los rieles 5 y superiores, y no el comando ''rails'' en sí mismo?

Como rails 5, algunos comandos ''rake'' están encapsulados dentro del comando ''rails''. Sin embargo, cuando se elimina el directorio ''bin /'', también se elimina el comando ''rails'' en sí, por lo que es necesario volver a ''rake'' para el restablecimiento, ya que ''rails'' ya no está disponible, pero ''rake'' todavía lo está.


Tuve el mismo problema al intentar usar el rails g controller y simplemente se bloqueó. Usé los mismos pasos que @mtrolle sugirió:

bundle config --delete bin
rails app:update:bin
git add bin

Entonces, cuando ejecuté: rails g controller Project index , creó el controlador, los ayudantes y la vista de índice y GET ''project/index'' route como se esperaba.