相关疑难解决方法(0)

在控制器中运行rake任务

我想在我的控制器中运行一个rake任务.有没有办法做到这一点?

ruby rake ruby-on-rails

72
推荐指数
4
解决办法
4万
查看次数

在宝石中包括rake任务

1)宝石里面有耙子任务的"最佳"位置吗?我见过它们/tasks,/lib/tasks我看到它们写成了- *.rb并且*.rake不确定哪个(如果有的话)是'正确的'

2)在环境中配置gem后,如何将它们提供给应用程序?

ruby rake rubygems ruby-on-rails

59
推荐指数
3
解决办法
2万
查看次数

如何从其他Ruby脚本调用标准Rakefile中定义的Rake任务?

是否可以从其他Ruby脚本中调用在Rakefile- 而不是somefile.rake- 中定义的任务?

我希望创建一个新的Rake::Application会自动加载Rakefile来自同一目录,但似乎并非如此.这是我到目前为止提出的:

$LOAD_PATH.unshift File.dirname(__FILE__)
require 'rake'
require 'pp'

rake = Rake::Application.new
rake[:hello].invoke
Run Code Online (Sandbox Code Playgroud)

执行此代码会导致以下结果:

/opt/ruby/1.9.2-p180/lib/ruby/1.9.1/rake.rb:1720:in `[]': Don't know how to build task 'hello' (RuntimeError)
from script.rb:7:in `<main>'
Run Code Online (Sandbox Code Playgroud)

pp rake 产生以下结果:

#<Rake::Application:0x00000101118da0
 @default_loader=#<Rake::DefaultLoader:0x00000101118b20>,
 @imported=[],
 @last_description=nil,
 @loaders=
  {".rb"=>#<Rake::DefaultLoader:0x00000101118a80>,
   ".rf"=>#<Rake::DefaultLoader:0x000001011189b8>,
   ".rake"=>#<Rake::DefaultLoader:0x00000101118800>},
 @name="rake",
 @original_dir=
  "/Users/t6d/Projects/Sandbox/Ruby/rake-from-ruby-script",
 @pending_imports=[],
 @rakefile=nil,
 @rakefiles=["rakefile", "Rakefile", "rakefile.rb", "Rakefile.rb"],
 @rules=[],
 @scope=[],
 @tasks={},
 @top_level_tasks=[],
 @tty_output=false>
Run Code Online (Sandbox Code Playgroud)

它是某种刺激性即@rakefilenil.

中欧时间5月20日下午4:40更新

在阅读了rake源代码一段时间之后,我发现你需要调用Rake :: Application#init来初始化你新创建的rake应用程序:

rake = Rake::Application.new
rake.init
rake.load_rakefile
Run Code Online (Sandbox Code Playgroud)

但是,我仍然无法调用我的Rakefile中定义的任何任务:

rake.top_level_tasks # => ["default"] …
Run Code Online (Sandbox Code Playgroud)

ruby rake

14
推荐指数
2
解决办法
6574
查看次数

标签 统计

rake ×3

ruby ×3

ruby-on-rails ×2

rubygems ×1