Cargar el environment de Rails en una tarea


#1

Hola,
estoy intentando de ejecutar un script para el cual necesito acceder al
environment de la aplicación. Hasta el momento las formas que conozco
son:

$ script/runner -e my_environment my_script

$ script/console my_environment < my_script

Sin embargo ninguna de las dos me parece muy elegante a la hora de
querer que estos scripts estén realmente incluidos dentro de tareas con
dependencias.

La idea es por ejemplo tener un rakefile:

namespace :example do

task :insert_cats do
Cat.new(:name => ‘Tom’).save
Cat.new(:name => ‘Felix’).save
Cat.new(:name => ‘Garfield’).save
end

end

¿Cómo puedo incluir el environment de rails?

Saludos,
Daniel H.


#2

On Jun 20, 2007, at 9:56 PM, Daniel Hernández wrote:

Sin embargo ninguna de las dos me parece muy elegante a la hora de
Cat.new(:name => ‘Felix’).save
Cat.new(:name => ‘Garfield’).save
end

end

¿Cómo puedo incluir el environment de rails?

Pon la tarea :environment como dependencia:

task :insert_cats => :environment do

end

– fxn


#3

La idea es por ejemplo tener un rakefile:

namespace :example do

task :insert_cats do
Cat.new(:name => ‘Tom’).save
Cat.new(:name => ‘Felix’).save
Cat.new(:name => ‘Garfield’).save
end

end

¿Cómo puedo incluir el environment de rails?

En el Rakefile que te genera el rails vienen las siguientes líneas:

require(File.join(File.dirname(FILE), ‘config’, ‘boot’))

require ‘rake’
require ‘rake/testtask’
require ‘rake/rdoctask’

require ‘tasks/rails’


Así que copialas al principio y ya tienes rails cargado… lo que para
escoger un enviroment u otro puedes poner la línea:

ENV[‘RAILS_ENV’] = ‘my_environment’

antes del primer require.