如何指定将我的数据库转储/加载到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 -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任务并设置一个像这样的环境变量:
$ 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?
是否有针对个别佣金任务的标准帮助命令?
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的可选参数?
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任务中使用?
我正在使用 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) 今天我在我的 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-tomcat。path = "/home/tomcat/tomcat"如果我从 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) 我正在使用 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 中,该行 …
我正在使用一个构建系统,它定义了许多 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 任务的依赖项?
rake-task ×10
rake ×7
ruby ×6
actionmailer ×1
command-line ×1
heroku ×1
logging ×1
rakefile ×1