Tag: 耙子

Rake任务更新列值

我正在编写一个rake任务来更新表中特定列的值。 当我运行任务时,我收到此错误: uninitialized constant FirstLookSubscription 这是rake任务代码: namespace :first_look_db do desc “Adds one month to the Look Subscription” FirstSubscription.where(subscription_state: ‘active’).each do |t| t.update_attribute :next_billing_check, ‘2013-9-10’ end end 我是rake任务的新手,我不想将其作为迁移。 任何建议都会很棒! 另请注意:当我在rails控制台中运行它时,它执行没有问题,我最大的问题是将它变成一个rake任务,以便我们的主管开发人员可以运行它

使用rspec中的传递参数测试rake任务

在rspec中,我想测试一个rake任务,传入一些参数,所以在命令行中你会运行这个: rake commissions:create_price_points options=1,2,3 在rake任务中我使用ENV [‘options’]。 在我的rspec中我有 rake = get_rake_environment(RAKE_FILE) rake[“commissions:create_price_points”].invoke(options=1,2,3) 这运行rake很好,但是这个,以及我用invoke和execute做的其他尝试,都没有将选项传递给它。 只是想知道是否有人对如何做到这一点有任何见解。 谢谢!

耙子流产了! nil的未定义方法“先决条件”:NilClass

剧透:它是rspec-railsgem的过时版本! 在将我的sqlite3 gem移动到开发块然后运行’rake db:migrate’以确保一切仍然有效之后,我从rails项目目录发出的任何rake命令都遇到了这个错误。 Rake在我的系统上的其他地方工作正常。 但是我在该目录中运行的任何rake任务都为我提供了跟踪的以下输出: /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/rspec-rails-2.0.0.beta.18/lib/rspec/rails/tasks/rspec.rake:3:in `’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/rspec-rails-2.0.0.beta.18/lib/rspec-rails.rb:8:in `load’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/rspec-rails-2.0.0.beta.18/lib/rspec-rails.rb:8:in `block in ‘ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/railtie.rb:183:in `call’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/railtie.rb:183:in `block in load_tasks’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/railtie.rb:183:in `each’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/railtie.rb:183:in `load_tasks’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/engine.rb:396:in `block in load_tasks’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/application/railties.rb:8:in `each’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/application/railties.rb:8:in `all’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/engine.rb:396:in `load_tasks’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/application.rb:103:in `load_tasks’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/railtie/configurable.rb:30:in `method_missing’ /Users/ianyoung/rails/third_app/Rakefile:7:in `’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load_rakefile’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:501:in `raw_load_rakefile’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:82:in `block in load_rakefile’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:81:in `load_rakefile’ /Users/ianyoung/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/application.rb:65:in […]

可以使用耙子任务进行spork工作吗?

Rake任务遇到与运行测试相同的问题:Rails启动过程在任务运行之前需要很长时间。 有没有办法将spork和rake整合在一起?

Rake任务:error handling

我还在学习耙子。 Rake是否支持处理任务的错误,如NANT的MSBuild:如果此任务失败; 执行anoter任务(回滚等) 例如:在MSBuild中,它们具有OnError元素 谢谢你的帮助

rake db:migrate什么都不做

我正在学习本教程 ,运行rake db:migrate时遇到问题 在db/migrate我有create_post.rb文件: class CreatePosts < ActiveRecord::Migration def change create_table :posts do |t| t.string :title t.text :text t.timestamps end end end 但它不会创建表格。 我的database.yml文件是: development: adapter: mysql2 encoding: utf8 database: blog_development pool: 5 username: root password: socket: /tmp/mysql.sock rake db:migrate的输出似乎没问题。 我正在使用phpMyAdmin来处理数据库,这是我手动正确创建的。 我究竟做错了什么?

如何多次执行带参数的Rake任务?

不可能在循环内多次 invoke相同的rake任务。 但是,我希望能够首先调用rake first并循环遍历数组,并在每次迭代时使用不同的参数调用second 。 由于invoke仅在第一次执行时,我尝试使用execute ,但Rake :: Task#execute不使用splat(*)运算符,只接受一个参数。 desc “first task” task :first do other_arg = “bar” [1,2,3,4].each_with_index do |n,i| if i == 0 Rake::Task[“foo:second”].invoke(n,other_arg) else # this doesn’t work Rake::Task[“foo:second”].execute(n,other_arg) end end end task :second, [:first_arg, :second_arg] => :prerequisite_task do |t,args| puts args[:first_arg] puts args[:second_arg] # … end 围绕它的一个方法就是将execute的参数放入一个数组中,然后再检查args的结构,但这似乎是hackish。 是否还有另一种(更好的?)方式来完成我想做的事情?

在rake任务中接受来自控制台/命令提示符的用户输入

我正在为Rails编写一个自定义rake任务,并且该程序有一点总结了它将要执行的操作,然后询问用户它将要执行的操作是否正确。 puts “\n Is this what you want to happen? [Y/N]” answer = gets.chomp if answer == “Y” # commits else if answer == “N” return false #(Aborts the rake task) end 但是,此代码会导致rake过早中止; rake aborted! No such file or directory – populate “ populate ”是rake任务的名称。 我认为在.gets方法中导致此错误的原因是什么 。 我不知道.gets方法是如何显式工作的,但我猜它必须自动将用户输入发送回写入脚本的文件,并且由于某种原因它变得混乱并且它认为是rake的名称task是文件的名称。 由于populate.rake不存在,我认为这就是抛出错误的原因。 但是,我不知道如何解决这个错误。 rake是否为.gets提供了另一种方法?

无法运行任何rake命令:“ERROR:’rake / rdoctask’已过时且不再支持”

我正在尝试运行rake migrate:db命令,我收到以下错误消息: ERROR: ‘rake/rdoctask’ is obsolete and no longer supported. Use ‘rdoc/task’ (available in RDoc 2.4.2+) instead. 我尝试了其他rake命令,我得到了同样的错误。 我怎样才能解决这个问题?

耙黄瓜和耙子规格总是使用“开发”环境

我运行Cucumber和RSpec测试的rake任务总是使用我的development环境。 以下是相关的配置文件: RAILS_ROOT/config/environments/cucumber.rb # Edit at your own peril – it’s recommended to regenerate this file # in the future when you upgrade to a newer version of Cucumber. # IMPORTANT: Setting config.cache_classes to false is known to # break Cucumber’s use_transactional_fixtures method. # For more information see https://rspec.lighthouseapp.com/projects/16211/tickets/165 config.cache_classes = true # Log error […]