标签: rake-task

编写Rake任务,用于在Rails应用程序的表中重命名字段名称

我是rails应用程序的新手.我需要更改表的列名.所以我浏览了一些网站,正如你提到的我想写的迁移文件..

  class RenameNameToFirstnameInUsers < ActiveRecord::Migration
    def self.up
      rename_column 'users', 'name', 'first_name'
    end

    def self.down
        rename_column 'users', 'first_name', 'name'
    end
 end
Run Code Online (Sandbox Code Playgroud)

如何保存这个文件和在哪里?

的applicationName /分贝/迁移/

我能以什么名义拯救这个?到目前为止,我已经看到很多文件,但所有那些都有一些big_number的前缀

保存后,如何在我的本地测试?

ruby-on-rails rake-task

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

ruby rake with rails在生产中缺少常量,但在开发环境中工作

我有一个rake任务在dev env中运行正常,但不是prod.

task :sample_test_quote => :environment do

  QuoterTester.test

end
Run Code Online (Sandbox Code Playgroud)

QuoterTester是一个带有类方法测试的模型类.

在dev下运行任务工作正常,如下所示:

rake sample_test_quote
Run Code Online (Sandbox Code Playgroud)

而在刺激下,我得到了这个:

$ RAILS_ENV=production rake sample_test_quote --trace
** Invoke sample_test_quote (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute sample_test_quote
rake aborted!
uninitialized constant QuoterTester
org/jruby/RubyModule.java:2590:in `const_missing'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/ext/module.rb:36:in `const_missing'
org/jruby/RubyMethod.java:133:in `call'
/Users/kimptoc/Documents/ruby/ecom/ecom1/lib/tasks/sample_test_quote.rake:3:in `(root)'
org/jruby/RubyProc.java:270:in `call'
org/jruby/RubyProc.java:220:in `call'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `execute'
org/jruby/RubyArray.java:1612:in `each'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `invoke_with_call_chain'
/Users/kimptoc/.rvm/rubies/jruby-1.6.5/lib/ruby/1.8/monitor.rb:191:in `mon_synchronize'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `top_level'
org/jruby/RubyArray.java:1612:in `each'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `top_level'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `run'
/Users/kimptoc/.rvm/gems/jruby-1.6.5@global/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' …
Run Code Online (Sandbox Code Playgroud)

ruby rake jruby rake-task ruby-on-rails-3.1

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

从父rake调用多个任务是否为每个任务加载环境

如果我有一个耙子调用多个其他耙子.

一旦我发起父母耙

rake myapp:main
Run Code Online (Sandbox Code Playgroud)

然后在rake中调用done会为每个任务加载环境,还是在运行时只执行一次活动rake myapp:main

namespace :myapp do
  desc "Main Run"
  task :main => :environment do
    Rake::Task['myapp:task1'].invoke
    Rake::Task['myapp:task2'].invoke
  end

  task :task1 => :environment do
    # Does the first task
  end

  task :task2 => :environment do
    # Does the second task
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby rake ruby-on-rails rake-task ruby-on-rails-3.2

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

TypeError:无法将Array转换为字符串

我在尝试使用Nokogiri运行rake任务时遇到此错误.

这是代码.

namespace :tops do
  desc "Get Tops Description"
  task get_description: :environment do
  require 'nokogiri'
  require 'open-uri'

 doc = Nokogiri::HTML(open("http://ceratoboutique.com/collections/tops"))

  price = Array.new 
  items = Array.new
  brands = Array.new
  sale_price = Array.new
  image = Array.new
  item_url = Array.new

  price = doc.xpath("//del").collect {|node| node.text.strip}
  items = doc.xpath("//div/a/h4").collect {|node| node.text.strip}
  brands = doc.xpath("//span[contains(@class,'vendor')]").collect {|node| node.text.strip}
  sale_price = doc.xpath("//span[contains(@class, 'price')]/text()").collect {|node| node.text.strip}
  image = doc.xpath("/div/a/img/@src").collect {|node| node.text.strip}
  item_url = doc.css('div.details a').map { |link| link['href'] }.collect 

  price.each do |prices|
      Tops.create(description: price)
    end
  end
end …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails nokogiri rake-task

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

如何在Rails中使用seeds.rb来测试数据?

我已经seeds.rb填充了我的开发数据库.我知道我可以seeds.rb使用以下方法轻松应用于我的测试数据库:

rake db:seed RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)

但是,我想要一个不同的 seeds.rb文件来填充我的测试数据库.也许吧seeds_test.rb.这对于rails程序员来说一定是一个非常普遍的要求,不是吗?

如果没有简单的方法可以做到这一点rake db:seed:seeds_test RAILS_ENV=test,那么我将如何创建一个rake任务呢?我会想到这样的事情lib/tasks/test_seeds.rake:

namespace :db do
  desc "Seed data for tests"
  task :seed_test => :environment do
    load "#{Rails.root}/db/seeds_test.rb"
  end
end
Run Code Online (Sandbox Code Playgroud)

我认为这样可行,但是我希望我的rake任务能够自动知道只将这个应用到测试数据库而不必指定:

rake db:seed_test RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)

如何获取rake任务,以便我必须在命令行中输入:

rake db:seed_test
Run Code Online (Sandbox Code Playgroud)

更新:另一个stackoverflow问题链接到答案的位置:

Rails.env = 'test'
Run Code Online (Sandbox Code Playgroud)

不幸的是,实际上并没有做任何事情(至少从Rails 4.2开始):(.

rake rspec ruby-on-rails minitest rake-task

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

使用Docker运行rake任务在Rails4中记录问题

我的rails4应用程序正在使用docker运行.它运行rake任务以从AWS SQS获取消息.

我遇到的问题是日志无法及时显示在控制台中.在发生异常/错误之前,控制台不会显示任何内容.换句话说,如果我的应用程序工作正常,则没有日志进入控制台.但是如果应用程序出错了,所有日志(信息,警告和错误)都汇集在一起​​!

我已经将config/production.rb配置为打击:

config.logger = Logger.new(STDOUT)
config.logger.level = Logger.const_get('INFO')
config.log_level = :info
Run Code Online (Sandbox Code Playgroud)

我google'rake任务日志无法正常工作',但没什么用处.这是rails日志问题还是rake任务日志问题,或者是docker问题?

希望得到一些建议!

logging ruby-on-rails rake-task

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

NameError:rake 任务中未初始化的常量 Class::Class

我正在尝试以这样的方式进行 rake 任务:

require 'open-uri'

namespace :news_parser do
  desc 'Parsing news from 6 news sites'
  task :parse_news do
    load 'lib/news_parser.rb'
    ProcherkParser.new.save_novelties
    VikkaParser.new.save_novelties
    InfomistParser.new.save_novelties
    ZmiParser.new.save_novelties
    VycherpnoParser.new.save_novelties
    ProvceParser.new.save_novelties
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的代码中,lib/news_parser.rb我有类和实例方法,它们可以在 Rails 控制台中完美运行,只需执行以下操作:

load 'lib/news_parser.rb'
ProcherkParser.new.save_novelties
Run Code Online (Sandbox Code Playgroud)

它将我需要的所有信息保存到我的数据库中。但我怎样才能在 rake 任务中做到这一点呢?任何帮助将不胜感激。谢谢。

ruby ruby-on-rails rake-task

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

效率低下的Ruby方法命名:将名称空间作为参数传递,作为调用方法的方法

在Ruby中必须有一种更有效的方法.我有一个方法列表,可以在多个站点中搜索相同的内容(标题,价格),但根据每个商店中的代码略有不同.例如:

def store1_get_title
def store1_get_price

def store2_get_title
def store2_get_price

def store3_get_title
def store3_get_price
Run Code Online (Sandbox Code Playgroud)

当调用所有这些函数时,我只想要一个带有"namespace"参数的泛型调用来调用这些方法中的任何一个,而不必输入所有这些,例如:

for get_all_stores().each do |store|
     store::get_title
     store::get_price
end
Run Code Online (Sandbox Code Playgroud)

...会像我想的那样调用store1_get_title,store1_get_price,store2_get_title,store2_get_price.有这样的事情或更好的方法吗?

希望有道理.感谢您的任何意见!

编辑:这些任务是在rake任务代码中.

ruby methods arguments namespaces rake-task

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

耙子流产了!耙不加载环境模型

已经查看了这个堆栈问题,此时我查看了答案中的所有链接.

创建自定义rake任务,代码如下所示:

task :seeding do
    op_a = CoverageDetail.create(option: 'a', privacy_and_website_media: 250000.00, privacy_breach_service: 20000,
                    legal_forensic_cost: 25000.00, call_center_service: 'inc', deductible: 5000.00,
                    credit_monitoring_individuals: 20000, fraud_resolution_service: 5000, regulatory_defense: 100000.00,
                    pci_fines_and_costs: 50000.00, crisis_management_and_pr: 50000.00, foreign_notification: 10000.00)

    op_b = CoverageDetail.create(option: 'b', privacy_and_website_media: 500000.00, privacy_breach_service: 25000,
                            legal_forensic_cost: 50000.00, call_center_service: 'inc', deductible: 5000.00,
                            credit_monitoring_individuals: 25000, fraud_resolution_service: 5000, regulatory_defense: 250000.00,
                            pci_fines_and_costs: 50000.00, crisis_management_and_pr: 50000.00, foreign_notification: 10000.00)

    op_c = CoverageDetail.create(option: 'c', privacy_and_website_media: 1000000.00, privacy_breach_service: 50000,
                            legal_forensic_cost: 100000.00, call_center_service: 'inc', deductible: 5000.00,
                            credit_monitoring_individuals: 50000, fraud_resolution_service: 5000, regulatory_defense: 500000.00,
                            pci_fines_and_costs: …
Run Code Online (Sandbox Code Playgroud)

rake rake-task ruby-on-rails-3

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

`Rake::Task['db:seed'].invoke` 不起作用 - “不知道如何构建任务 'db:seed'”

我在测试我的 rake 任务时遇到问题。任务如下所示:

namespace :db do
  desc 'Load the seed data from db/seeds.rb'
  task :seed => :environment do
    puts 'seed'
  end
end
Run Code Online (Sandbox Code Playgroud)

我的测试是这样的:

require 'rake'
require 'spec_helper'

RSpec.describe Rake::Task do
  describe "db:seed" do
    it "runs a task" do
      Rake::Task['db:seed'].invoke
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

一切看起来都不错,但我仍然收到该错误:

 Failure/Error: Rake::Task['db:seed'].invoke
   RuntimeError:
     Don't know how to build task 'db:seed' (See the list of available 
     tasks with `rake --tasks`)
Run Code Online (Sandbox Code Playgroud)

最奇怪的是,通过控制台调用时,同样的任务可以工作:

> rake db:seed
seed
Run Code Online (Sandbox Code Playgroud)

一些想法?

rspec ruby-on-rails rake-task

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