我有一个rake任务需要将值插入多个数据库.
我想从命令行或另一个 rake任务将此值传递给rake任务.
我怎样才能做到这一点?
我rake db:migrate和他之间的区别rake db:reset很明显.我不明白的是rake db:schema:load与前两者有多么不同.
只是为了确保我在同一页面上:
rake db:migrate - 运行尚未运行的迁移.rake db:reset- 清除数据库(可能是rake db:drop+ rake db:create+ rake db:migrate)并在新数据库上运行迁移.如果我的理解出错了,请帮助澄清一下.
我有一个充满数据的开发Ruby on Rails数据库.我想删除所有内容并重建数据库.我正在考虑使用类似的东西:
rake db:recreate
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我添加了一张我认为我需要的表格,但现在不再计划使用它了.我该如何删除该表?
我已经运行了迁移,因此该表位于我的数据库中.我认为rails generate migration应该能够解决这个问题,但我还没弄清楚怎么做.
我试过了:
rails generate migration drop_tablename
Run Code Online (Sandbox Code Playgroud)
但那只是一个空的迁移.
在Rails中删除表的"官方"方法是什么?
我已经编译在两个方面项目Rake文件,根据全局变量$build_type,它可以是:debug或:release(结果走在不同的目录):
task :build => [:some_other_tasks] do
end
Run Code Online (Sandbox Code Playgroud)
我希望创建一个任务,依次编译项目的两个配置,如下所示:
task :build_all do
[ :debug, :release ].each do |t|
$build_type = t
# call task :build with all the tasks it depends on (?)
end
end
Run Code Online (Sandbox Code Playgroud)
有没有办法将任务称为方法?或者我怎样才能达到类似的效果呢?
什么bundle exec rake db:migrate意思?或者只是bundle exec rake <command>一般?
据我所知,bundle它负责维护Gemfile中的内容.我知道"exec"这个词是什么意思.我明白,rake你可以保留所有不同的脚本,我知道这db:migrate就是其中之一.我只是不知道这些话在一起做什么.为什么要bundle用来rake执行数据库迁移?
在Rails环境中运行计划任务的最佳方法是什么?脚本/亚军?耙?
我正在尝试创建自定义rake任务,但似乎我无法访问我的模型.我认为这是rails任务中隐含的内容.
我在lib/tasks/test.rake中有以下代码:
namespace :test do
task :new_task do
puts Parent.all.inspect
end
end
Run Code Online (Sandbox Code Playgroud)
这是我的父模型的样子:
class Parent < ActiveRecord::Base
has_many :children
end
Run Code Online (Sandbox Code Playgroud)
这是一个非常简单的例子,但我收到以下错误:
/> rake test:new_task
(in /Users/arash/Documents/dev/soft_deletes)
rake aborted!
uninitialized constant Parent
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢
我有一个rake任务,我在开始时做一些检查,如果其中一个检查失败,我想从rake任务提前返回,我不想执行任何剩余的代码.
我认为解决方案是在我希望从代码返回的地方放置一个返回但是我得到以下错误
unexpected return
Run Code Online (Sandbox Code Playgroud) 我能够传递如下参数:
desc "Testing args"
task: :hello, :user, :message do |t, args|
args.with_defaults(:message => "Thanks for logging on")
puts "Hello #{args[:user]}. #{:message}"
end
Run Code Online (Sandbox Code Playgroud)
我还能够为Rails应用程序加载当前环境
desc "Testing environment"
task: :hello => :environment do
puts "Hello #{User.first.name}."
end
Run Code Online (Sandbox Code Playgroud)
我想做的是能够拥有变量和环境
desc "Testing environment and variables"
task: :hello => :environment, :message do |t, args|
args.with_defaults(:message => "Thanks for logging on")
puts "Hello #{User.first.name}. #{:message}"
end
Run Code Online (Sandbox Code Playgroud)
但这不是一个有效的任务调用.有谁知道我怎么能做到这一点?