ruby-on-rails-3 - generate - ruby on rails rake
Cargar y usar el accesorio en la consola de rieles (6)
Debería poder cargar sus dispositivos antes de ingresar a la consola. Me gusta esto:
rake db:fixtures:load RAILS_ENV=test
rails c test
Sin embargo, aún no podrá acceder a los datos de su dispositivo como lo haría en una prueba. Esto simplemente carga su base de datos de prueba con sus datos de accesorios. Entonces todavía tendrías que hacer algo como:
user = User.find_by_name("John")
Pero aún puedes crear accesos directos para este tipo de cosas. Puedes agregar cualquier código de rubí que quieras a tu ~ / .irbrc. Sugiero crear un archivo .railsrc como se describe here . Luego puede configurar cosas como:
john = User.find_by_name("John")
Entonces, ahora puede simplemente comenzar a referirse a la variable ''john'' después de la carga de la consola. Por cierto, la publicación a la que me he vinculado muestra cómo configurar un archivo .railsrc global, pero podrías configurarlo para que tengas un proyecto .railsrc por proyecto. O, si quieres algo un poco menos elegante, pero fácil de hacer ... solo crea un archivo ruby en tu proyecto (tal vez ''shortcuts.rb''). Después de que la consola está cargada, simplemente haz un ''atajo'' obligatorio.
Me pregunto si hay una manera de cargar y / o usar el accesorio en la consola de rieles. En realidad, me gustaría crear un usuario de mi dispositivo users.yml
para hacer algunas pruebas sin tener que pasar por todo el "dolor" de hacer User.new(:name = "John", :email = "..")
cada vez.
Actualmente estoy en entorno de prueba ( rails c RAILS_ENV=test
).
Si no es una buena manera de hacer las cosas, por favor dilo. Soy nuevo en Rails, así que estoy aquí para aprender :)
Entonces tuve una necesidad similar pero ligeramente diferente. Quería usar mis accesorios existentes (de mi prueba rspec) para poblar mi base de datos de desarrollo. Así es como lo hice agregando una nueva tarea a mi archivo rake (ubicado en libs / tasks / *. Rake):
task d_populate: :environment do
require ''active_record/fixtures''
fixtures_dir = File.join(Rails.root, ''/spec/fixtures'') #change ''/spec/fixtures'' to match your fixtures location
Dir.glob(File.join(fixtures_dir,''*.yml'')).each do |file|
base_name = File.basename(file, ''.*'')
puts "Loading #{base_name}..."
ActiveRecord::Fixtures.create_fixtures(fixtures_dir, base_name)
end
end
Si combina esto con un db: reset, puede poblar su entorno de desarrollo a voluntad agregando esto a su tarea de rake también:
task reseed: [:environment, ''db:reset'', ''db:d_populate'']
Luego puede llamar a rake db: reseed para completar los archivos YAML del dispositivo.
Es posible especificar un directorio de dispositivo alternativo utilizando la variable FIXTURES_DIR. El valor debe ser relativo a la prueba / accesorios.
$ rake db:fixtures:load RAILS_ENV=test FIXTURES_DIR=''../../spec/fixtures''
También es posible especificar un conjunto limitado de accesorios
$ rake db:fixtures:load RAILS_ENV=test FIXTURES_DIR=''../../spec/fixtures'' FIXTURES=users,user_roles
Puede cargar un dispositivo en la consola de Rails 3.2 de la siguiente manera:
require ''active_record/fixtures''
ActiveRecord::Fixtures.create_fixtures FIXTURE_PATH_HERE, MODEL_NAME_HERE
Puede ser tarde ... Rails 4
require ''active_record/fixtures''
ActiveRecord::FixtureSet.create_fixtures(Rails.root.join(''test'', ''fixtures''), ''users'')
También puede cargar accesorios en su base de datos de desarrollo:
$ rake db:fixtures:load
$ rails c
> require ''active_record/fixtures''
> john = User.find ActiveRecord::FixtureSet.identify(''john'')