ruby-on-rails - 在 Rails 中,如何运行加载 rails 环境的脚本?

标签 ruby-on-rails activerecord

我有一些需要运行的脚本,我想从 Rails 应用程序访问完整的环境。

我知道我用过 script/runner在 Rails 2.3 之前。

但我也使用了“delay_job”,它像这样加载 rails 环境(2.3 代码):

#!/usr/bin/env ruby

require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'

我正在处理的脚本现在从消息队列中提取数据,然后我希望它使用事件记录和我的模型将该数据插入到日志记录数据库中(这可能与其他数据库相同,也可能不同)该应用程序使用。

最佳答案

从您的脚本中,您需要需要文件 config/environment.rb在您的应用程序中。请注意,这正是 DJ 在这里所做的。在 Rails 3 中也是如此。

注意,如果你把你的脚本变成一个 Rake 任务(你可以把它放在 Rakefile 或你自己的 *.rake 文件中 lib/tasks ),你可以简单地让你的任务依赖于 Rails 定义的任务 environment .

task :mytask => :environment do
  # custom stuff
end

关于ruby-on-rails - 在 Rails 中,如何运行加载 rails 环境的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4248278/

相关文章:

ruby-on-rails - Ruby 内置的#permutation 和#repeated_permutation 方法的时间复杂度是多少?

mysql - Rails 中用于消息传递系统的 Tricky MySQL 查询 - 请帮助

ruby-on-rails - 关联三个模型的 Rails

ruby-on-rails - rails 服务器命令的问题

ruby-on-rails - 让 turbolinks 包装器与 Ruby on Rails Devise 一起工作

ruby-on-rails - ActiveRecord 数组::Base.connection.execute Ruby On Rails

ruby-on-rails - 事件记录中的动态 where 子句避免 sql 注入(inject)

ruby-on-rails - ActiveRecord 自动保存 :false doesn't appear to work

使用 codeigniter 进行 MySQL 查询(事件记录)

ruby-on-rails - 如何在没有支持表的情况下在 Rails 中创建只读模型