标签: rakefile

Windows上的Rake cp权限被拒绝

这是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提供相同的权限.

ruby rake file-permissions rakefile

5
推荐指数
1
解决办法
704
查看次数

Rails - Rakefile

什么是Rakefile?在root/Rakefile中

要让Jammit工作,您需要将以下内容添加到Rakefile中

require 'jammit'
Jammit.package!
Run Code Online (Sandbox Code Playgroud)

这是为什么?这到底是做什么的?thxs

rake ruby-on-rails rakefile ruby-on-rails-3

5
推荐指数
1
解决办法
3290
查看次数

如何将args从命令行传递给rake然后传递给rspec

我试图通过命令行传递几个变量来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规范文件

ruby rake rspec rakefile rspec2

5
推荐指数
1
解决办法
785
查看次数

在Rakefile中动态生成Rake测试任务(基于现有测试文件)

我正在基于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没有提供任何帮助,所以我坚持循环.

ruby rakefile rake-task

5
推荐指数
1
解决办法
4117
查看次数

在Rake名称空间中访问Rails环境配置

我在我的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像我试图那样使用设置的配置值?

有更好/正确的方法吗?

干杯,

卢克

ruby-on-rails rakefile

5
推荐指数
1
解决办法
627
查看次数

在命名空间之外执行任务

我有一个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.

我错过了什么?

ruby rake ruby-on-rails rakefile

5
推荐指数
1
解决办法
416
查看次数

从ruby gem加载rake任务

我正在写一个宝石,我想从我的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列表中没有它们.

ruby rake ruby-on-rails rakefile

5
推荐指数
1
解决办法
1550
查看次数

即使测试失败,如何使MSTest.exe返回0?

我们有一个在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不发出失败的返回代码?

testing teamcity mstest rakefile albacore

5
推荐指数
1
解决办法
696
查看次数

在Rake中组合多个任务时清理任务

我在使用以下依赖项定义的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"执行...

rake ruby-on-rails rakefile ruby-on-rails-3

4
推荐指数
1
解决办法
1826
查看次数

如何从rake文件中运行ruby类?

我想从sample.rake文件运行ruby类.

考虑myruby.rb是一个ruby文件.

我想从运行此sample.rakeruby myruby.rb

ruby rake ruby-on-rails rakefile rake-task

4
推荐指数
1
解决办法
7201
查看次数