我有一个RakefileRake任务,我通常会从命令行调用:
rake blog:post Title
Run Code Online (Sandbox Code Playgroud)
我想编写一个多次调用Rake任务的Ruby脚本,但我看到的唯一解决方案是使用``(反引号)或system.
这样做的正确方法是什么?
我创建了一个模型ruby脚本/生成模型文章(简单enuff)
这是迁移文件create_articles.rb:
def self.up
create_table :articles do |t|
t.column :user_id, :integer
t.column :title, :string
t.column :synopsis, :text, :limit => 1000
t.column :body, :text, :limit => 20000
t.column :published, :boolean, :default => false
t.column :created_at, :datetime
t.column :updated_at, :datetime
t.column :published_at, :datetime
t.column :category_id, :integer
end
def self.down
drop_table :articles
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行rake:db migrate命令时,我收到一个错误rake中止!"未初始化的常量CreateArticles."
有谁知道为什么这个错误不断发生?
我正在使用Rails 3.0.3并且已经在数据库中拥有我的"类别"表的数据,但是想要从中创建种子文件.是否有任何rake任务将从此表中为我生成seeds.rb格式?
我一直在使用Rails,它发回给我这个错误.请提出问题.谢谢你的帮助.我会用更好的问题更新这个问题,因为我不知道怎么问.
Bundler::GemNotFound: Could not find rake-10.3.2 in any of the sources
~/.rvm/gems/ruby-2.0.0-p451/gems/bundler-1.6.2/lib/bundler/spec_set.rb:92:in `block in materialize'
~/.rvm/gems/ruby-2.0.0-p451/gems/bundler-1.6.2/lib/bundler/spec_set.rb:85:in `map!'
~/.rvm/gems/ruby-2.0.0-p451/gems/bundler-1.6.2/lib/bundler/spec_set.rb:85:in `materialize'
~/.rvm/gems/ruby-2.0.0-p451/gems/bundler-1.6.2/lib/bundler/definition.rb:133:in `specs'
~/.rvm/gems/ruby-2.0.0-p451/gems/bundler-1.6.2/lib/bundler/definition.rb:178:in `specs_for'
Show 28 more lines
Run Code Online (Sandbox Code Playgroud)
我相信我的佣金是最新版本
的Gemfile
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.3'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee …Run Code Online (Sandbox Code Playgroud) 我正在构建一个集成测试套件,我需要有一个逻辑,我需要一个干净的数据库.如何在我db:test:purge的一个测试中运行任务?
我正在使用:ruby 1.9.2,rails 3.0.9,rspec 2.6
我正在将一条收割机线放入一个耙子任务,以杀死一些额外产生的红宝石任务,因为它们偶尔会爬行.
system "ps aux | grep 'namespace:taskname' | grep ruby | grep -v grep | awk '{print $2}' | xargs kill -9; echo 'Reaped old namespace:taskname processes.'"
Run Code Online (Sandbox Code Playgroud)
我想补充grep -v $PID_OF_CURRENT_TASK一下,只是为了确保我不会杀死正在运行的当前任务.
我如何获得PID?
一周前我已经在Ruby on rails上开始了我的教程我有一个疑问请指导我们....
什么是耙子以及如何在轨道中使用?
Let's say I have a rakefile like this:
file 'file1' => some_dependencies do
sh 'external tool I do not have control over, which sometimes fail to create the file'
???
end
task :default => 'file1' do
puts "everything's OK"
end
Run Code Online (Sandbox Code Playgroud)
Now if I put nothing in place of ???, I get the OK message, even if the external tool fails to generate file. What is the proper way to informing rake, that 'file1' task has failed and it should abort …
我正在使用Rails 3.2并进行包含以下代码的迁移:
add_column :users, :gift_aid, :integer, :default => 2
# reset columns
User.reset_column_information
... code here to load legacy data from sqlite3 database ...
# now create a user with the loaded column data
user = User.create( ...other cols...,
:gift_aid => migrated_gift_aid_column_data,
...other cols... )
Run Code Online (Sandbox Code Playgroud)
我unknown attribute: gift_aid在运行迁移时得到了.User.column_names在调用之前和之后显示相同的列表reset_column_information.
奇怪的是,当我手动删除mysql中的列并重新运行迁移时,它按预期工作.从第一次迁移开始,再次使用空数据库并且它不起作用,因此它与运行所有迁移而不是单个迁移有关.
我之前有几个关于User模型的迁移,包括reset_column_information两者都可以正常工作.
我真的在这个问题上摸不着头脑 - 任何人都有任何想法
我希望自动执行以下操作:
根据我的理解,这方面的工具是Rake和Thor,但是,我应该使用哪一个?
在我看来,耙子更具事实性和受欢迎程度.我听过有人推荐Thor.
这些如何在破败中相互对立?