标签: rake

如何将命令行参数传递给rake任务

我有一个rake任务需要将值插入多个数据库.

我想从命令行或另一个 rake任务将此值传递给rake任务.

我怎样才能做到这一点?

ruby rake command-line command-line-arguments

1065
推荐指数
15
解决办法
33万
查看次数

rake db:migrate db:reset和db:schema:load之间的区别

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 database rake ruby-on-rails

593
推荐指数
3
解决办法
33万
查看次数

清除或重新创建Ruby on Rails数据库

我有一个充满数据的开发Ruby on Rails数据库.我想删除所有内容并重建数据库.我正在考虑使用类似的东西:

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

这可能吗?

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

571
推荐指数
11
解决办法
33万
查看次数

Rails数据库迁移 - 如何删除表?

我添加了一张我认为我需要的表格,但现在不再计划使用它了.我该如何删除该表?

我已经运行了迁移,因此该表位于我的数据库中.我认为rails generate migration应该能够解决这个问题,但我还没弄清楚怎么做.

我试过了:

rails generate migration drop_tablename
Run Code Online (Sandbox Code Playgroud)

但那只是一个空的迁移.

在Rails中删除表的"官方"方法是什么?

database migration rake ruby-on-rails ruby-on-rails-3

483
推荐指数
15
解决办法
34万
查看次数

如何从Rake任务中运行Rake任务?

我已经编译在两个方面项目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)

有没有办法将任务称为方法?或者我怎样才能达到类似的效果呢?

ruby rake

402
推荐指数
5
解决办法
14万
查看次数

bundle exec rake是什么意思?

什么bundle exec rake db:migrate意思?或者只是bundle exec rake <command>一般?

据我所知,bundle它负责维护Gemfile中的内容.我知道"exec"这个词是什么意思.我明白,rake你可以保留所有不同的脚本,我知道这db:migrate就是其中之一.我只是不知道这些话在一起做什么.为什么要bundle用来rake执行数据库迁移?

rake ruby-on-rails bundler

343
推荐指数
4
解决办法
13万
查看次数

rails的cron工作:最佳实践?

在Rails环境中运行计划任务的最佳方法是什么?脚本/亚军?耙?

cron rake daemon ruby-on-rails runner

294
推荐指数
12
解决办法
10万
查看次数

rails rake任务是否可以访问ActiveRecord模型?

我正在尝试创建自定义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 activerecord ruby-on-rails task

224
推荐指数
5
解决办法
5万
查看次数

如何从rake任务中提前返回?

我有一个rake任务,我在开始时做一些检查,如果其中一个检查失败,我想从rake任务提前返回,我不想执行任何剩余的代码.

我认为解决方案是在我希望从代码返回的地方放置一个返回但是我得到以下错误

unexpected return
Run Code Online (Sandbox Code Playgroud)

ruby rake

213
推荐指数
6
解决办法
5万
查看次数

如何在Rails环境中将参数传递给Rake任务?

我能够传递如下参数:

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)

但这不是一个有效的任务调用.有谁知道我怎么能做到这一点?

ruby rake ruby-on-rails

210
推荐指数
5
解决办法
9万
查看次数