标签: rake-task

使用rake转储和加载数据库

如何指定将我的数据库转储/加载到yaml的目录?

rake db:data:dump_dir
Run Code Online (Sandbox Code Playgroud)

创建

db/2011-08-31_14:10:57_+0100/
Run Code Online (Sandbox Code Playgroud)

rake db:data:load_dir

No such file or directory - <RAILS_ROOT>/db/base
Run Code Online (Sandbox Code Playgroud)

我的问题是你是否可以指定转储到/加载的目录名称以及如何?

谢谢

rake rake-task ruby-on-rails-3

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

Rake任务列出给定模型的所有迁移

在终端上,是否有一个rake任务列出已在特定模型上运行的所有迁移?如果没有,我该怎么做?

当我跑rake -T,rake db:migrate:status似乎是正确的答案,但它给了我迁移名称作为其中一个列.虽然名称Add logo to company确实表明了公司模型,但并非所有迁移都有这样明确的名称.一个很好的例子Change data type for content.我有400多个迁移文件,所以这个功能真的很有帮助.

所以,理想的输出是:

database: abcd_development

 Status   Migration ID    Migration Name     Model Name
----------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

谢谢!

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

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

在调用Rake任务时设置多个环境变量

我可以调用Rake任务并设置一个像这样的环境变量:

$ ONE=1 rake temp:both
Run Code Online (Sandbox Code Playgroud)

但是我如何设置两个环境变量?

这不起作用:

 $ ONE=1 TWO=2 rake temp:both 
Run Code Online (Sandbox Code Playgroud)

这有效,但令人困惑的是:

$ ONE=1 rake temp:both TWO=2 
Run Code Online (Sandbox Code Playgroud)

如何在通话之前传递多个环境rake

ruby rake ruby-on-rails rake-task ruby-on-rails-3

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

如何获得特定佣金任务的帮助?

是否有针对个别佣金任务的标准帮助命令?

rake -h 显示rake的选项.

rake -D 描述了rake任务.

rake mytask 运行mytask.

是否有类似的东西rake -h mytask会描述mytask,并列出其可选和/或必需的参数?

例如,以下代码将在rails中运行单个测试:

rake test TEST=path_to_test
Run Code Online (Sandbox Code Playgroud)

如何发现TEST = path_to_test是rake test的可选参数?

ruby rake ruby-on-rails rake-task

5
推荐指数
2
解决办法
2397
查看次数

在Rake任务中使用环境变量

task :some_task, :environment do |t, args|
  puts Rails.env #=> development, production, etc
  puts ENV #=> {}
end
Run Code Online (Sandbox Code Playgroud)

我设置了一些环境变量(通过本地.env,或通过Herokusan通过Heroku Config),例如要使用的AWS桶,我想在rake任务中引用它们,但ENV是一个空哈希.我知道与环境有关的事情因为:environment任务依赖而有所作为并且Rails.env有价值,但我不清楚细节.

那么,我如何ENV在Rake任务中使用?

ruby-on-rails environment-variables rake-task

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

坏组件(预期的主机组件):在运行 rake 任务以在 heroku 上使用 roadie 发送电子邮件时收到

我正在使用 roadie gem 来帮助处理电子邮件的内联 css,并且在运行 rake 任务以发送电子邮件时遇到以下错误。我的应用程序托管在 heroku 上。它在开发模式下工作正常,但在生产中出现此错误。我不太明白这个问题。其他邮件在生产中发送得很好。我几乎是一个初学者。在此先感谢您的帮助!

rake aborted!
bad component(expected host component): http://nameless-taiga-7547.herokuapp.com/
/app/vendor/ruby-1.9.2/lib/ruby/1.9.1/uri/generic.rb:395:in `check_host'
/app/vendor/ruby-1.9.2/lib/ruby/1.9.1/uri/generic.rb:409:in `host='
/app/vendor/ruby-1.9.2/lib/ruby/1.9.1/uri/generic.rb:180:in `initialize'
/app/vendor/ruby-1.9.2/lib/ruby/1.9.1/uri/generic.rb:126:in `new'
/app/vendor/ruby-1.9.2/lib/ruby/1.9.1/uri/generic.rb:126:in `build'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/inliner.rb:206:in `absolute_url_base'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/inliner.rb:192:in      `ensure_absolute_url'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/inliner.rb:180:in `block in make_image_urls_absolute'
/app/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.5.6/lib/nokogiri/xml/node_set.rb:239:in `block in each'
/app/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.5.6/lib/nokogiri/xml/node_set.rb:238:in `upto'
/app/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.5.6/lib/nokogiri/xml/node_set.rb:238:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/inliner.rb:179:in `make_image_urls_absolute'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/inliner.rb:57:in `block in execute'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/inliner.rb:80:in `block in adjust_html'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/inliner.rb:79:in `tap'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/inliner.rb:79:in `adjust_html'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/inliner.rb:51:in `execute'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie.rb:6:in `inline_css'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/action_mailer_extensions.rb:75:in `inline_style_response'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/action_mailer_extensions.rb:54:in `block in collect_responses_and_parts_order_with_inline_styles'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/action_mailer_extensions.rb:54:in `map'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/action_mailer_extensions.rb:54:in `collect_responses_and_parts_order_with_inline_styles'
/app/vendor/bundle/ruby/1.9.1/gems/actionmailer-3.2.11/lib/action_mailer/base.rb:648:in `mail'
/app/vendor/bundle/ruby/1.9.1/gems/roadie-2.4.3/lib/roadie/action_mailer_extensions.rb:35:in `mail_with_inline_styles'
/app/app/mailers/match_mailer.rb:13:in `deal_match'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.11/lib/abstract_controller/base.rb:167:in `process_action'
/app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.11/lib/abstract_controller/base.rb:121:in `process' …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails actionmailer heroku rake-task

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

Rake命名空间下的任务变量

今天我在我的 rake 脚本中看到了一件奇怪的事情。我在不同的命名空间下有两个 Rake 任务,如下所示:

path = "/home/tomcat/tomcat"

namespace :stage do
  path = "/home/tomcat/stage-tomcat"
  desc "Deploys a java application to stage tomcat"
  task :java_deploy do
    puts path # stage:java_deploy should print /home/tomcat/stage-tomcat
  end
end

namespace :production do
  path = "/home/tomcat/production-tomcat"
  desc "Deploys a java application to production tomcat"
  task :java_deploy do
    puts path # production:java_deploy should print /home/tomcat/production-tomcat
  end
end
Run Code Online (Sandbox Code Playgroud)

当我运行时:rake stage:java_deploy它打印

/home/tomcat/生产-tomcat

我期待/home/tomcat/stage-tomcatpath = "/home/tomcat/tomcat"如果我从 rake 文件中删除第一行,它就会按预期工作。

知道为什么是这个科拉瓦里吗?:)

提前致谢!!

ruby rake ruby-on-rails rake-task

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

如何从命令行使用默认参数调用 rake 任务?

我有一个 rake 任务来在 xml 文件中生成给定数量的项目。如果没有给出任何内容,我想要一个默认值。现在只打印了 50 个,但我想在这里有一个可变的数量,我如何从命令行调用它?

namespace :utilites do
  desc "generate xml"
  task generate_xml: :environment do |t, args|
    args.with_defaults(:length => 50)
    p args[:length]
  end

end
Run Code Online (Sandbox Code Playgroud)

ruby rake command-line rake-task

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

在 rake 任务中使用 rails 记录器,rails 5

我正在使用 rails 5 构建一个 ruby​​ on rails 应用程序,并且我有许多 rake 任务,我想从中记录信息。但是,当我尝试访问记录器时,出现错误:未定义的局部变量或方法“记录器”

我在 lib/tasks 中有我的 rake 任务,并且我已经在 production.rb 和 development.rb 中声明了一个记录器

这是一个示例任务:

namespace :some_namespace do
    desc "a description"
    task :scrape_info do
        include Scraper
        startTime = Time.now
        Rails.logger.tagged("Scraper") { Rails.logger.info "Beginning scrape: #{startTime} " }
        Scraper.scrape_info
        endTime = Time.now
        Rails.logger.tagged("Scraper") { Rails.logger.info "Finished scrape: #{endTime} " }
    end
end
Run Code Online (Sandbox Code Playgroud)

以及我定义记录器的 development.rb 的摘录:

 config.logger = Logger.new(STDOUT)
 config.log_level = :info
 config.logger = ActiveSupport::TaggedLogging.new(logger)
Run Code Online (Sandbox Code Playgroud)

知道如何将记录器合并到 rake 任务中吗?我知道我可以简单地使用 puts 语句打印到标准输出,但最终我希望有每日日志文件,并且我希望我的 rake 任务包含在这些文件中

答案: 只需添加@Joel_Blum 的答案中给出的环境标签。此外,在 development.rb 中,该行 …

ruby logging ruby-on-rails rake-task

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

覆盖 rake 任务和 rake 任务依赖性?

我正在使用一个构建系统,它定义了许多 rake 目标,包括这个:

task :test => [:all]
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎是不正确的,所以我定义了自己的 rake 任务,如下所示:

task :test => [:spec]
task :all => [:test, :build]
task :release => [:all]
task :default => [:release]
Run Code Online (Sandbox Code Playgroud)

但是,现在当我尝试构建我的包时遇到此错误:

Circular dependency detected: TOP => default => all => test => all
Tasks: TOP => default => all => test
BUILD FAILED
Run Code Online (Sandbox Code Playgroud)

我开始意识到,定义 rake 任务(或 rake 任务的依赖项)只是将这些任务/依赖项附加到任务定义中!这真让我抓狂!为什么我不能按照我认为合适的方式重新定义我的 rake 任务?!有没有办法覆盖 rake 任务和/或覆盖 rake 任务的依赖项?

ruby rake circular-dependency rakefile rake-task

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