这是rake文件.
task :default => :release
task :release do
target = 'releases/' + Time.new.strftime('%Y%m%d')
mkdir_p target
cp Dir["web"], target
end
Run Code Online (Sandbox Code Playgroud)
我得到"许可被拒绝 - 网络".在Windows中运行时,我需要做些什么来为rake提供相同的权限.
什么是Rakefile?在root/Rakefile中
要让Jammit工作,您需要将以下内容添加到Rakefile中
require 'jammit'
Jammit.package!
Run Code Online (Sandbox Code Playgroud)
这是为什么?这到底是做什么的?thxs
我试图通过命令行传递几个变量来rake在rspec中使用.
从我收集的内容中我可以做到这一点,将args传递给我的rake任务:
task :my_task, :arg1, :arg2 do |t, args|
puts "Args were: #{args}"
end
Run Code Online (Sandbox Code Playgroud)
但我正在使用rspec,所以我的rake任务看起来像这样:
RSpec::Core::RakeTask.new(:my_task), :arg1, :arg2 do |t, args|
puts args.arg1
puts args.arg2
end
Run Code Online (Sandbox Code Playgroud)
这不起作用.
我也没想出如何将它传递给我的rspec规范文件
我正在基于Rakefile中的现有测试文件动态生成测试任务.考虑您有以模式命名的各种单元测试文件test_<name>.rb.所以我正在做的是创建一个以'test'命名空间内的文件名命名的任务.使用下面的代码,我可以调用所有测试rake test:<name>
require 'rake/testtask'
task :default => 'test:all'
namespace :test do
desc "Run all tests"
Rake::TestTask.new(:all) do |t|
t.test_files = FileList['test_*.rb']
end
FileList['test_*.rb'].each do |task|
name = task.gsub(/test_|\.rb\z/, '')
desc "Run #{name} tests"
Rake::TestTask.new(:"#{name}") do |t|
t.pattern = task
end
end
end
Run Code Online (Sandbox Code Playgroud)
上面的代码工作,它似乎太多代码用于简单的任务生成.我仍然没有找到一种方法将一些描述文本打印到控制台puts "Running #{name} tests:"
有比上述方法更优雅的方式吗?
编辑:我真正期望得到的是动态定义任务的循环的替代方案,但我想rake lib没有提供任何帮助,所以我坚持循环.
我在我的environment.rb文件中定义了一个路径
MyRailsApp::Application.configure do
config.xml_import_path = "/path/to/xml"
end
Run Code Online (Sandbox Code Playgroud)
我希望能够像这样在Rake文件中设置变量访问
namespace :myapp do
xml_path = MyRailsApp::Application.config.xml_import_path
task :first_task => :environment do
# do some stuff with xml_path
end
task :second_task => :environment do
# do some other stuff with xml_path
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时我一直都会收到错误 rake myapp:first_task
undefined method `xml_import_path' for #<Rails::Application::Configuration:0x00000006a98bd8>
Run Code Online (Sandbox Code Playgroud)
我想这与环境没有被加载有关,因为它可以正常工作
xml_path = MyRailsApp::Application.config.xml_import_path
Run Code Online (Sandbox Code Playgroud)
在任务定义中.
是否有任何方法可以environment.rb像我试图那样使用设置的配置值?
有更好/正确的方法吗?
干杯,
卢克
我有一个rake文件设置如下:
require 'rake'
namespace :setup do
puts "I'm in setup"
task :create do
puts "I'm in create"
end
end
task :run do
puts "I'm in run"
end
Run Code Online (Sandbox Code Playgroud)
如果我跑,rake setup:create我得到预期的:
I'm in setup
I'm in create
Run Code Online (Sandbox Code Playgroud)
但是,如果我跑,rake run我得到:
I'm in setup
I'm in run
Run Code Online (Sandbox Code Playgroud)
从我在指南中可以看出,这是出乎意料的,如下所述:
查找任务名称时,rake将从当前命名空间开始,并尝试在那里找到该名称.如果它无法在当前命名空间中找到名称,它将搜索父命名空间,直到找到匹配项(如果没有匹配项则发生错误).
不会假设rake从当前命名空间开始,然后继续寻找某些东西.在我的例子中,我没有提供当前的名称,但它跳进去setup,尽管我给的是它run.
我错过了什么?
我正在写一个宝石,我想从我的rails应用程序访问gem rake任务.为此,我使用了Railties.
我有lib/frontrockets-rails/railtie.rb与
require 'frontrockets-rails'
require 'rails'
module FrontrocketsRails
class Railtie < Rails::Railtie
railtie_name :frontrockets
rake_tasks do
load 'tasks/frontrockets.rake'
end
end
end
Run Code Online (Sandbox Code Playgroud)
和
lib/frontrockets-rails.rb 同
module FrontrocketsRails
require 'frontrockets-rails/railtie' if defined?(Rails)
end
Run Code Online (Sandbox Code Playgroud)
而且当然 lib/tasks/frontrockets.rake
namespace :frontrockets do
desc 'Create .bowerrc file'
task :create_bowerrc do
touch '.bowerrc'
end
task :install => [:create_bowerrc] do
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我在我的Rails应用程序中安装这个gem时,我仍然无法执行这个rake任务,rake -T列表中没有它们.
我们有一个在TeamCity上运行的构建,包含几个不同的测试项目.它们各自一个接一个地运行,我们正在使用Rakefile中的MSTest.exe来编排所有内容,因此:
desc 'Run Unit Tests'
mstest :data_test => [:build_database_tests] do |mstest|
puts build_header("Data Tests")
mstest.command = msTestCommand
mstest.parameters = [
"/resultsfile:dTest.trx",
"/detail:errormessage",
"/detail:description",
"/usestderr"
]
mstest.assemblies "../../../Database/DataTests/bin/Release/DataTests.dll"
end
Run Code Online (Sandbox Code Playgroud)
这会生成一个很好的TRX文件,TeamCity可以解析它和所有内容,从而形成一个漂亮的干净报告选项卡.但是,如果测试失败,MSTest.exe将返回1,该rake将其解释为失败,并导致其余测试无法运行.
我们想抑制这种行为; 我们希望构建在测试失败时继续运行,以便我们可以看到其他测试也可能失败.如果测试失败,我们如何让Rake忽略返回代码,和/或导致MSTest.exe不发出失败的返回代码?
我在使用以下依赖项定义的rake中有一个构建任务:
desc 'Builds the App'
task :rebuild_dev => ["solr:start", "db:drop", "db:create", "db:migrate", "spec", "solr:stop"]
Run Code Online (Sandbox Code Playgroud)
第一个任务"solr:start"启动Solr Indexing服务器.现在,如果构建失败(可能在规范测试中失败),则不执行"solr:stop"任务.并且服务器没有停止.
是否有任何方法可以指定清理任务或始终运行的任务,即使其中一个从属任务失败?在我的情况下,要始终确保"solr:stop"执行...
我想从sample.rake文件运行ruby类.
考虑myruby.rb是一个ruby文件.
我想从运行此sample.rake像ruby myruby.rb