Tag: 任务

从RAILS_ROOT外部运行rake任务

我的RAILS_ROOT是/ usr / local / www / application / 如果我从RAILS_ROOT中运行’rake db:migrate RAILS_ENV = production’,它可以正常工作。 但是我似乎找不到从RAILS_ROOT外部运行相同命令的方法。

将许多rake任务组合到一个rake任务中

而不是像这样单独运行每个rake任务: rake db:drop rake db:create rake db:migrate rake db:load 我想运行一个完成所有操作的rake任务。 这就是我对rakefile的看法: desc ‘This rebuilds development db’ namespace :rebuild_dev do Rake::Task[“db:drop”].execute Rake::Task[“db:create”].execute Rake::Task[“db:migrate”].execute Rake::Task[“db:load”].execute end 当我运行它时,上面的代码不起作用。

如何将命名参数传递给Rake任务?

有没有办法在不使用环境变量的情况下将命名参数传递给Rake任务? 我知道Rake任务可以接受两种格式的参数: 环境变量 $ rake my_task foo=bar 这将创建一个名为foo的环境变量和可以通过ENV[‘foo’]在Rake任务my_task访问的值bar 。 耙任务参数 $ rake my_task[‘foo’,’bar’] 这会将值foo和bar传递给前两个任务参数(如果已定义)。 如果my_task被定义为: task :my_task, :argument_1, :argument_2 那么argument_1的值为foo , argument_2的值为bar 。

Ruby:从没有Rails的gem访问rake任务

我知道可以在Ruby gem中的许多地方定义Rake任务: 在Rakefile里面 内部tasks/*.rake 在lib/tasks/*.rake 我已经读过,当要在gem本身执行任务时,应该使用前两个。 当希望公开任务时,似乎应该选择第三种选择。 网上有许多教程演示了使用Rails从gem加载Rake任务的各种方法,即利用Rails::RailTie 。 但是,我想找到一种在不需要Rails的情况下在另一个gem中使用依赖gem的任务的方法。 有一个简单的解决方案吗? 有人会善意地描述正确的方法,或概述哪些方法可行? UPDATE 我已经尝试创建一个文件bin/my-gem ,以便在系统上用于从my-gem执行Rake任务。 我把以下内容放在里面; #!/usr/bin/env ruby require ‘rubygems’ require ‘rake’ task=ARGV[0] spec = Gem::Specification.find_by_name(‘dsi_core’) Dir[“#{spec.gem_dir}/lib/tasks/*.rake”].each {|file| puts file and Rake::load_rakefile(file)} Rake::Task.clear # Avoid tasks being loaded several times in dev mode Rake::Task[task].reenable # Support re-execution of a task. Rake::Task[task].invoke 部分内容基于此SOpost 。 遗憾的是我做错了,因为在安装gem之后运行my-gem mytask并在lib/test.rake定义了lib/test.rake然后输出以下内容: […]