yll*_*ate 1 ruby ruby-on-rails ruby-on-rails-3
我有一些我在Rails 3.1.x应用程序之外编写的其他脚本,但现在是时候直接从Rails应用程序的数据库中提取数据而不是利用一些数据导出.
为此,我想将脚本集成到我的rails应用程序中.到目前为止,我已经根据模型中的方法运行了rake任务,例如在我的lib/taks/app.rake:
desc "Does something."
task :do_some_things => :environment do
ModelName.some_method
ModelName.another_method
end
Run Code Online (Sandbox Code Playgroud)
如果我将脚本基本上放到lib中,我是否可以从rake任务中调用它们?或者我需要模型中的调用方法require lib/my_script.rb吗?
我试图写一个这样的任务:
task :run_me => :environment do
`bundle exec lib/script.rb`
end
Run Code Online (Sandbox Code Playgroud)
然后,当这执行并且我有一个require脚本.rb(require 'lib/another_script.rb')我最终得到"无法加载此类文件"错误.
我现在显然是以错误的方式接近这个.
好像我应该在rake任务中简单地进行一个方法调用,然后调用/ lib或其他地方的支持脚本(在哪里最合适).
我处理这种事情的首选方式如下:
所以,用非常简单的术语:
# lib/foo.rb
module Foo
def bar
puts "called me"
end
end
Run Code Online (Sandbox Code Playgroud)
和:
# Rakefile
require File.expand_path('../config/application', __FILE__)
Dir[
File.expand_path(Rails.root.join 'lib', '**', '*.rb')
].each {|f| require f}
desc "does bar from lib"
task :do_bar do
include Foo
bar
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1012 次 |
| 最近记录: |