标签: rakefile

NameError: 未初始化的常量 Rails::TestTask

我将此代码放在我的 Rakefile 中,以便能够从附加文件夹“test/classes”(不仅仅是来自 test/models、test/controllers 等)运行测试:

# Adding test/classes directory to rake test.
namespace :test do # line 9
  desc "Test tests/classes/* code"
  Rails::TestTask.new(parsers: 'test:prepare') do |t| # line 11
    t.pattern = 'test/classes/**/*_test.rb'
  end
end

Rake::Task['test:run'].enhance ["test:classes"]
Run Code Online (Sandbox Code Playgroud)

当我运行rails test.

但是当我运行时rails db:migrate,我收到此错误:

NameError: uninitialized constant Rails::TestTask
/Users/Developer/project/Rakefile:11:in `block in <top (required)>'
/Users/Developer/project/Rakefile:9:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能摆脱错误,但仍然能够从

ruby rake ruby-on-rails rakefile rake-task

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

是否可以在另一个Rakefile任务中使用?

我有一些Rake任务,我想在我的Rakefiles中使用.是否可以在另一个rakefile中包含一个rakefile中定义的任务?

ruby rake rakefile

3
推荐指数
1
解决办法
2255
查看次数

通过ruby文件确认可执行文件(脚本,bat,cmd,exe)的存在

使用ruby文件(或任何rake工具),我需要确定执行我的脚本的用户是否能够执行某些Shell命令。尤其是g ++等。希望与系统无关,因此,如果存在某些g ++。bat,g ++。exe或只是g ++(等),则只要在用户系统上的路径和可执行文件上都应该说是。

示例:如果用户具有该文件的无扩展名可执行文件版本和该文件的.cmd版本,则对于Linux系统上的no扩展名版本,应该说“是”,而对于Windows上的.cmd版本则应说“是”。系统。由于用户外壳程序只能执行该版本的文件。

这样做的目的是允许脚本进行自我配置(尽可能多)。

关于如何执行此操作的任何建议?

ruby rake rakefile

3
推荐指数
1
解决办法
2995
查看次数

强制ruby隐藏异常时的回溯

我做一些常见的任务Rakefile,比如编译,链接等.

当编译失败时,ruby显示完全回溯,其中发生了任务错误,但它对我来说真的没用,甚至更多:这个回溯隐藏了编译错误.

$ rake
mkdir -p build
llvm-as source/repl.ll -o build/repl.bc
llvm-as: source/repl.ll:6:22: error: expected value token
  call i32 @fputc(i8 'x', i32 0)
                 ^
rake aborted!
Command failed with status (1): [llvm-as source/repl.ll -o build/repl.bc...]
/usr/local/lib/ruby/1.9.1/rake.rb:993:in `block in sh'
/usr/local/lib/ruby/1.9.1/rake.rb:1008:in `call'
/usr/local/lib/ruby/1.9.1/rake.rb:1008:in `sh'
/usr/local/lib/ruby/1.9.1/rake.rb:1092:in `sh'
...
Run Code Online (Sandbox Code Playgroud)

如何在"rake aborted"之后隐藏所有内容!?

rakefile

3
推荐指数
1
解决办法
1257
查看次数

为什么我得到"RAKEFILE ABORTED,NO RAKEFILE FOUND"?

我试图进行交互式Ruby测试无济于事.

我没有问题地下载了zip文件,并按照终端命令行的说明继续得到以下错误.我使用的是"Ruby 1.9.3p392(2013-02-22修订版39386)[x86_64-darwin10.8.0]".

如果有人可以提供任何帮助或建议,请提前感谢您.

INSTRUCTIONS:

Install RSpec

  gem install rspec

Enter the course directory. (That's the same directory that this
index.html file is in.)

  cd learn_ruby

Enter the 00_hello lab.

  cd 00_hello

Open a terminal in this directory

cd 00_hello

This directory is the starting point for this exercise. It contains a
spec file and you'll be adding a ruby file to (eventually) make the
specs pass.

Run the test

  rake

Watch it fail

You should see an error. Don't …
Run Code Online (Sandbox Code Playgroud)

ruby rakefile

3
推荐指数
1
解决办法
8053
查看次数

Rake 迁移错误 - 活动记录中的“未定义方法”“迁移”

系统:Windows 10 使用:当前版本的 Ruby 我试图按照https://github.com/piedoom/tumbot上的说明运行 tumbot

然而,尽管安装了该捆绑包,它还是拒绝迁移。我得到的错误是 https://66.media.tumblr.com/029bbd52eda91c2ffbac01f7c8af467d/27d62997ece87db2-48/s540x810/4c5b63b9acfbd7495342cb667fc8c78236964d60.png

C:\Users\QueenBee>rake migrate
rake aborted!
NoMethodError: undefined method `migrate' for ActiveRecord::Migrator:Class
C:/Users/QueenBee/Rakefile:9:in `block in <top (required)>'
Tasks: TOP => migrate
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)

里面的rake文件看起来像这样 https://66.media.tumblr.com/1b6f54503a7b2c5d91c43ae5a2801988/27d62997ece87db2-9c/s540x810/172efac954b66f4dc77980a3e2fdfda0b529be71

require 'active_record'
require 'yaml'
require 'logger'

task :default => :migrate

desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x"
task :migrate => :environment do
      ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil )
end

task :environment do
      ActiveRecord::Base.establish_connection(YAML::load(File.open('config/database.yml')))
          ActiveRecord::Base.logger = …
Run Code Online (Sandbox Code Playgroud)

ruby migration rakefile

3
推荐指数
1
解决办法
2522
查看次数

在rakefile中等效的<echo> ant任务?

ruby rake文件中<echo> ant任务的等效性是什么?

ruby ant echo rakefile

2
推荐指数
1
解决办法
1231
查看次数

你如何创建一个Rakefile?

我一直在创建一个Rakefile.方向说创建一个Rakefile文件,可以帮助您自动执行常见任务.它还说要投入:

    require 'rake/testtask'

    Rake::TestTask.new do |t|
      t.libs << "tests"
      t.test_files = FileList['tests/test*.rb']
      t.verbose = true
    end
Run Code Online (Sandbox Code Playgroud)

谢谢

ruby rakefile

2
推荐指数
1
解决办法
3350
查看次数

Ruby:返回非零退出状态

我希望我的Ruby脚本在某个条件下返回任何非零退出状态.退出状态本身并不重要,只要它不为零即可.我测试了它是如何完成的:

test_exit.rb:

exit 4
Run Code Online (Sandbox Code Playgroud)

test_exit_wrap.rb:

system("ruby test_exit.rb")
puts $?.exitstatus
Run Code Online (Sandbox Code Playgroud)

CMD:

> ruby test_exit_wrap.rb
4
Run Code Online (Sandbox Code Playgroud)

这太棒了,因为它正是我想要的.然后我试着在我的项目中复制它.

pullrequest.rb:

results = [install_result.class, clicks_result.class, event_result.class, tuples_result.class, match_result.class]

if results.include? NilClass 
    puts "result included nil"
    exit 4
end
Run Code Online (Sandbox Code Playgroud)

rakefile.rb:

command = "irb #{@script} #{@app_id} #{start_date} #{end_date} #{start_time} #{end_time} #{@timezone} #{@database}"
system("#{command}")
puts $?.exitstatus

if $?.exitstatus != 0
    puts "!!!!!!!!!!!!!!!!!!!!!! FAILED JOB !!!!!!!!!!!!!!!!!!!!!!!!!!"
    @backjob_queue << fail
end
Run Code Online (Sandbox Code Playgroud)

CMD:

  pullkochava.rb(main):032:1>  
  result included nil
  => nil
  pullrequest.rb(main):032:0>
  0
Run Code Online (Sandbox Code Playgroud)

(当然,剪掉这些,希望它仍然有意义;同样@script等于pullrequest.rb,我已经双重检查了)我们可以看到if results.include?块肯定会被执行,但是出口4似乎丢失了.0来自puts $ ?. exitstatus,我永远不会让它返回任何东西而不是0.我已经尝试过引发错误,不同的退出代码和中止.Abort确实返回非零退出代码; 然而它也中止了耙子.它将放置FAILED JOB,但是rakefile无法将@backjob_queue保存到我的数据库中.

我错过了什么吗?如何返回不会中止rake的非零退出状态?

ruby exit-code rakefile

2
推荐指数
1
解决办法
6118
查看次数

Ruby v &gt;= 1.9 的 Rakefile 中默认任务支持的哈希语法是什么?

在此 Rakefile 中,我想将默认任务设置为 :test。

task :default => :test
Run Code Online (Sandbox Code Playgroud)

Rubocop 现在已经进入现场并声明

Style/HashSyntax: Use the new Ruby 1.9 hash syntax.
Run Code Online (Sandbox Code Playgroud)

伟大的。我没有太多 Ruby 背景,但我确实知道通用哈希语法旨在分配值并方便以后获取它们。

老实说,我不知道如何传达这一点,你有一些任务并且有一个“神奇”的默认实例,我想分配:test

我尝试了一些排列,但似乎都不起作用。我显然不是来自同一个星球。

ruby rakefile rubocop

2
推荐指数
1
解决办法
546
查看次数

从Rakefile/Ruby on Rails 3中的模型访问类方法

我有一个模型,我们称之为Foobar.我希望能够运行一个cron作业来更新作为Foobar实例的所有对象的属性.所以,在伪代码中,它可能是这样的:

Foobar.all.each do |foobar|
  foobar.update_attributes({:my_attribute => 'updated'});
end
Run Code Online (Sandbox Code Playgroud)

现在,假设我将其包装在名为Foobar.run_update()的类方法中.

调用Foobar.run_update()可以从控制器,甚至从视图中正常工作.但是,我想要做的是从Rakefile运行run_update(),以便我可以将它绑定到cron运行.但是,当从Crontab调用Rake时,Foobar类不可用.

我怎么解决这个问题?当从Cron调用Rake时,如何从Rake访问Foobars的类方法?

非常感谢您的帮助.

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

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

在Ruby中正确转义shell参数

这是代码:

desc "Find 301 errors on production servers"
task :find301 do
  command = "grep 'HTTP/1.1\" 301' /var/log/httpd/*ssl-access.log | grep -v 'gclid' | awk '{print \$7}' | sort | uniq -c | sort -nr"

  production_servers.each do |server|
    sh "ssh root@#{server} #{command}"
  end
end
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法来逃避shell命令,最好采用允许sh "ssh root@#{server} #{command}"与任意commands 一起使用的格式?

ruby rake rakefile

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

如何正确包含Ruby rakefile中的其他项目文件

我在包含在Rake文件中使用的其他文件时遇到问题.例如,我有一个version.rb文件,其中包含我想在rake文件中引用的版本号,另外,我有一个gem规范,在.gemspec文件中指定,我也想在rake中使用文件.我无法确定引用这两个文件的正确路径.事实上,这是我遇到的问题最严重的红宝石问题(require语句/ LOAD_PATH),令人非常沮丧; 由于我不确定如何解决这些问题,这个问题变得更糟.我目前正在避免使用诸如bundler之类的包处理程序,因为我需要先了解基础知识.

请参阅我的代码编辑器的附图,其中显示了项目结构(标准宝石结构,对于名为Cart的宝石,这只是一个虚拟应用程序进行实验).

购物车项目结构

所以,我的rakefile.rb位于项目的根文件夹中.指定require时,指定的路径应该相对于何处?它是相对于您要求的文件还是相对于lib文件夹或其他任何文件?我正在运行rake -T,列出任务,这些是我看到的错误消息:

尝试从Rakefile.rb中要求version.rb文件:

require 'cart/version'

$ rake -T
rake aborted!
cannot load such file -- lib/cart/version
/Users/Sancho/dev/ruby/student/cart/Rakefile.rb:5:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)
require 'lib/cart/version'

$ rake -T
rake aborted!
cannot load such file -- lib/cart/version
/Users/Sancho/dev/ruby/student/cart/Rakefile.rb:5:in `<top (required)>'
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)

试图从Rakefile.rb中要求cart.gemspec:

require 'cart.gemspec'

$ rake -T
rake aborted!
cannot load such file -- cart.gemspec
/Users/Sancho/dev/ruby/student/cart/Rakefile.rb:6:in `<top (required)>'
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)

我使用的是Ruby 2.0.0版,rake版本0.9.6(OSX Mavericks附带的默认版本).

(PS,我的目的是购买像RubyGems这样的Ruby IDE,但同样,我暂时没有这样做,因为我想首先学习基础知识,我不想依赖于IDE来解决我的问题.我不明白如何从第一原则修复它们.

谢谢.

ruby require rakefile

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