标签: rake-task

rake检查是否已经运行

是否有可能以某种方式执行rake任务只有它还没有运行,我想使用cron执行一些rake任务但是rake任务不应该在前一次调用未完成时启动谢谢

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

9
推荐指数
3
解决办法
3251
查看次数

新手:'rake -T'时出现错误信息

我正在为我的项目使用Ruby Enterprise Edition.当我通过运行命令检查所有我的rake任务时rake -T,我收到以下错误消息:

You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.9.2. Using bundle exec may solve this.
Run Code Online (Sandbox Code Playgroud)

错误消息暗示我可以使用bundle exec来解决问题,但我不确定如何?那么,如何摆脱这个错误信息?

- - - - - - - - - - - - - - - 更多 - - - - - - - - - - --------

我更喜欢更新我的Gemfile而不是运行bundle exec rake -T.但是当我打开我的项目Gemfile时,我没有在我的Gemfile中看到rake 0.9.2,为什么错误消息会抱怨我有它?我可以在哪里定义rake 0.9.2 ??

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

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

Ruby on Rails中的单步批量删除

如何从Rake任务发送这样的查询到数据库服务器而不删除"每个"循环中的逐个记录?

delete from data
where uuid in (
    select uuid
    from data
    group by uuid, raw, recdate
    having count(*)>1
);
Run Code Online (Sandbox Code Playgroud)

sql ruby-on-rails batch-file rake-task

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

由于rake版本差异,rake db:migrate正在中止

我收到了错误

rake db:migrate --trace
rake aborted!
You have already activated rake 10.1.1, but your Gemfile requires rake 10.1.0. Using bundle exec may solve this.
/Users/iang/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:33:in `block in setup'
/Users/iang/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:19:in `setup'
/Users/iang/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler.rb:120:in `setup'
/Users/iang/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/setup.rb:7:in `<top (required)>'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:116:in `require'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:116:in `rescue in require'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:122:in `require'
/Users/iang/code/Projects/work/startco/config/boot.rb:4:in `<top (required)>'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
/Users/iang/code/Projects/work/startco/config/application.rb:1:in `<top (required)>'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
/Users/iang/code/Projects/work/startco/Rakefile:4:in `<top (required)>'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/rake_module.rb:25:in `load'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/rake_module.rb:25:in `load_rakefile'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:637:in `raw_load_rakefile'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:94:in `block in load_rakefile'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:165:in `standard_exception_handling'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:93:in `load_rakefile'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:77:in `block in run'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:165:in `standard_exception_handling' …
Run Code Online (Sandbox Code Playgroud)

ruby gem rubygems ruby-on-rails rake-task

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

如何使用OptionParser解析rake参数

提供我试图用来解析参数的答案.我从那里简化了示例,我不得不添加两个以使其工作.OptionParserrakeARGV.shift

require 'optparse'

namespace :user do |args|

  # Fix I hate to have here
  puts "ARGV: #{ARGV}"
  ARGV.shift
  ARGV.shift
  puts "ARGV: #{ARGV}"

  desc 'Creates user account with given credentials: rake user:create'
  # environment is required to have access to Rails models
  task :create => :environment do
    options = {}
    OptionParser.new(args) do |opts|      
      opts.banner = "Usage: rake user:create [options]"
      opts.on("-u", "--user {username}","Username") { |user| options[:user] = user }
    end.parse!

    puts "user: #{options[:user]}"

    exit 0
  end
end …
Run Code Online (Sandbox Code Playgroud)

ruby rake ruby-on-rails rake-task

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

Rails 3.1:如何仅为Web应用程序运行初始化程序(rails server/unicorn/etc)

我的webapp需要加密其会话数据.我设置的是:

config/initializers/encryptor.rb:

require 'openssl'
require 'myapp/encryptor'

MyApp::Encryptor.config[ :random_key ] = OpenSSL::Random.random_bytes( 128 )
Session.delete_all

app/models/session.rb:

require 'attr_encrypted'

class Session < ActiveRecord::Base
  attr_accessible :session_id, :data
  attr_encryptor :data, :key => proc { MyApp::Encryptor.config[ :random_key ] }, :marshal => true

  # Rest of model stuff
end
Run Code Online (Sandbox Code Playgroud)

一切都很好,并保证会话数据安全.这是问题:当我运行自定义rake任务时,它会加载初始化程序并清除所有会话.不好!

我可以在初始化程序中放置什么来确保它仅用于webapp初始化?或者,我可以在初始化程序中添加什么来使其不用于rake任务?

更新:好的,我现在所做的就是添加MYAPP_IN_RAKE = true unless defined? MYAPP_IN_RAKE到我的.rake文件中.然后在我的初始化程序中我做:

unless defined?( MYAPP_IN_RAKE ) && MYAPP_IN_RAKE
    # Web only initialization
end
Run Code Online (Sandbox Code Playgroud)

似乎工作.但我愿意接受其他建议.

ruby rake ruby-on-rails initializer rake-task

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

Rails创建一个没有迁移的表

我有一个rails应用程序,它有一个特定的表,其中数据甚至结构是在rails和ruby之外动态生成的.这是一个设计,它是一个特殊的表,其中结构是从其他活动记录和关系中自包含的.对其起作用的模型也是原子的.所有这些都是设计和有目的的.我不想要这个表的特定结构,这意味着每次初始化表时列名和列数都会改变.如果表结构有变化,我可以管理对模型类的更改.

我的问题是rails迁移过程似乎妨碍了,我不想在迁移和回滚之间来回徘徊,只是为了让这个单个表的状态重置.

我正在寻找的行为实际上是每次我"生成"该表的数据时我想删除可能已经存在的表(在所有环境中:生产,开发和测试).

是否有明确的方法绕过迁移过程?或者创建一个独立于应用程序中其他迁移序列的特殊迁移?

整个数据库不是一次性的,但这一个表是.

关于如何实现这种行为的想法?

Rails 3,PostgreSQL数据库,git版本控制,heroku主机

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

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

在rake任务中运行时,bundle包失败

我的环境

香草Ubuntu 12.10,没有rvm或renv.

> gem --version
1.8.23

> ruby --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

> bundle --version
Bundler version 1.2.1
Run Code Online (Sandbox Code Playgroud)

我的问题

我有一个rake任务来打包我的宝石并将它们上传到我的开发和生产服务器.问题是当Gemfile包含git或path gems时,rake任务失败.Bundler已经支持这些类型的宝石的包装,它在我的终端上工作得很好但是在运行rake任务时失败了,我找不到原因.

我的佣金任务

> cat lib/tasks/upload.rake

namespace :deploy do
  desc "Package all gems and upload to remote server"
  task :upload => [:environment] do |t, args|
    if ! system("bundle package --all")
      raise "TOTAL FAIL"
    end

    # Magic method to upload vendor/cache to remote server
  end
end
Run Code Online (Sandbox Code Playgroud)

我的尝试

在终端中运行捆绑包工作:

> bundle package --all
....
Using bson (1.7.0) …
Run Code Online (Sandbox Code Playgroud)

ruby bundle rake-task

7
推荐指数
2
解决办法
1427
查看次数

Rake依赖不执行但调用工作

我一直在尝试运行rake db:test:clone_structure,但它一直无法重建数据库.我终于看了看任务本身:

task :clone_structure => [ "db:structure:dump", "db:test:load_structure" ]
Run Code Online (Sandbox Code Playgroud)

当我运行跟踪时,我注意到db:test:load_structure没有执行:

$ rake db:test:clone_structure --trace
** Invoke db:test:clone_structure (first_time)
** Invoke db:structure:dump (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:structure:dump
** Invoke db:test:purge (first_time)
** Invoke environment 
** Execute db:test:purge
** Execute db:test:clone_structure
Run Code Online (Sandbox Code Playgroud)

现在,当我将clone_structure任务更改为调用时 load_structure ......

task :clone_structure => [ "db:structure:dump", "db:test:load_structure" ] do   
  db_namespace["test:load_structure"].invoke
end
Run Code Online (Sandbox Code Playgroud)

......一切都突然起作用!

$ rake db:test:prepare --trace

** Invoke db:test:clone_structure (first_time)
** Invoke db:structure:dump (first_time)
** Invoke …
Run Code Online (Sandbox Code Playgroud)

ruby rake rake-task

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

如何构建任务'elasticsearch:import:model'

好吧,我安装了elasticsearch-rails gem(版本0.1.5),我可以清楚地看到gem文件中的任务.

但是当我跑步的时候

bundle exec rake environment elasticsearch:import:model CLASS='Comment'
Run Code Online (Sandbox Code Playgroud)

我收到这个错误.

跑步rake environment -D并没有向我展示任务.

elasticsearch正在运行,如果我卷曲http://localhost:9200它会回应我.

为什么这不起作用?

rake ruby-on-rails rake-task elasticsearch

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