【发布时间】:2010-09-25 00:40:08
【问题描述】:
我想运行一个独立的 ruby 脚本,我需要在其中使用我的 RoR 环境。具体来说,我需要我的模型扩展 ActionMailer 和 ActiveRecord。我还需要从我的 database.yml 中读取数据库配置。 我该怎么办?
【问题讨论】:
标签: ruby-on-rails ruby environment
我想运行一个独立的 ruby 脚本,我需要在其中使用我的 RoR 环境。具体来说,我需要我的模型扩展 ActionMailer 和 ActiveRecord。我还需要从我的 database.yml 中读取数据库配置。 我该怎么办?
【问题讨论】:
标签: ruby-on-rails ruby environment
最简单的方法是将脚本的 shebang 从:
#!/usr/bin/ruby
到
#!/path/to/your/rails/script/runner
等等,您的脚本将在加载完整的 rails 环境的情况下运行。您还可以将脚本作为./my_script -e production 运行,以使其与生产数据库一起运行。
【讨论】:
查看此线程: How do I run Ruby tasks that use my Rails models?
基本上归结为:
require "#{ENV['RAILS_ROOT']}/config/environment.rb"
玩得开心!
【讨论】:
我认为最好的方法是让它成为一个 rake 任务。
# lib/tasks/mystuff.rake
desc 'do my stuff'
task :my_stuff => [:environment] do
# do my stuff
end
[:environment] 节加载 rails 环境。
【讨论】: