Tag: 耙子

铁轨项目中的耙子范围?

在我正在研究的项目中,我有很多使用rakes运行的解析器。 当使用另一个rake中已存在的方法名称,并且因为它们都使用相同的环境时,我会遇到冲突。 有没有办法限制其名称空间中的rake文件的范围? 我认为那是命名空间的全部意义吗? 例: namespace :test do task :test_task => :environment do … end def test_method(argument) … end end namespace :other_test do task :test_task => :environment do … end def test_method(argument, argument2) … end end 在这种情况下,当运行rake test:test_task我将收到无效数量的参数错误。 另一方面,如果我在任务本身内定义方法,我必须按顺序将方法保留在rake文件的顶部。 这有点令人困惑和丑陋。 那只是一个必要的邪恶吗? 谢谢!

将db转储到rails中的yml fixture的标准方法是什么?

我已经看到一些插件和自定义rake任务将活动数据库转储到固定装置,但我不确定主流技术是什么。 基本上,我想要与rake相反:db:fixtures:load,以便我可以在部署时将基本数据库信息(管理员用户帐户,一个)放入svn中。 我不想手动创建夹具,例如需要很长时间的样本数据。 当我们部署时,我希望能够运行 rake db:migrate rake db:fixtures:load 并参加比赛。 在rails中执行此操作的最佳/首选方法是什么? 编辑: 所以似乎没有标准的方法来执行db:fixtures:load的相反rake任务。 我不想使用迁移,因为我想要一个标准的方法来为我的所有项目执行此操作,并且我不喜欢在迁移中添加任何可能的管理员帐户的想法。 其次,我一直在重新思考使用灯具的想法。 我决定使用yaml_db,因为它使用rake任务: rake db:data:dump rake db:data:load 数据将在YAML文件中结束而不会破坏测试装置(可能会有所不同,现在我更仔细地考虑这个)。 此外,如果像Heroku这样的主要发行工具正在使用它,我不必担心支持/长寿问题。 我想这最接近我会找到的“标准”。 感谢所有的好评。

手动更新模型后更新db / migrate?

例如,我有这个模型: class Product < ActiveRecord::Base attr_accessible :name, :order end 然后,当我做rake db:migrate它创建了这个db / migrate / 20120825132038_create_products.rb : class CreateProducts < ActiveRecord::Migration def change create_table :products do |t| t.integer :order t.string :name t.timestamps end end end 但这一切都发生了因为我使用了rails generate Product order:integer name:string 现在我转到产品型号并手动更改为: class Product < ActiveRecord::Base attr_accessible :name, :order, :category_id validates :name, uniqueness: true belongs_to :category end […]

来自rake任务的render_to_string

我想使用Rake任务来缓存我的站点地图,以便对sitemap.xml请求不会永远占用。 这是我到目前为止所拥有的: @posts = Post.all sitemap = render_to_string :template => ‘sitemap/sitemap’, :locals => {:posts => @posts}, :layout => false Rails.cache.write(‘sitemap’, sitemap) 但是当我尝试运行它时,我收到一个错误: undefined local variable or method `headers’ for # 如何从Rake中将模板渲染为字符串?

在Rails中使用gem时,“无法删除Object :: ClassMethods”的内容源于什么?

在安装提供类似问题的gem时,我经常遇到问题: 有谁知道这源于什么? 我已经看过几个不同的案例,但仍然没有学到究竟是什么导致它。 $ sudo rake gems:install –trace (in /u/app/releases/20100213003957) ** Invoke gems:install (first_time) ** Invoke gems:base (first_time) ** Execute gems:base ** Invoke environment (first_time) ** Execute environment rake aborted! cannot remove Object::ClassMethods /u/app/releases/20100213003957/vendor/rails/activesupport/lib/active_support/dependencies.rb:603:in `remove_const’ /u/app/releases/20100213003957/vendor/rails/activesupport/lib/active_support/dependencies.rb:603:in `remove_constant’ /u/app/releases/20100213003957/vendor/rails/activesupport/lib/active_support/dependencies.rb:603:in `instance_eval’ /u/app/releases/20100213003957/vendor/rails/activesupport/lib/active_support/dependencies.rb:603:in `remove_constant’ /u/app/releases/20100213003957/vendor/rails/activesupport/lib/active_support/dependencies.rb:549:in `new_constants_in’ /u/app/releases/20100213003957/vendor/rails/activesupport/lib/active_support/dependencies.rb:549:in `each’ /u/app/releases/20100213003957/vendor/rails/activesupport/lib/active_support/dependencies.rb:549:in `new_constants_in’ /u/app/releases/20100213003957/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require’ /u/app/releases/20100213003957/vendor/rails/railties/lib/tasks/misc.rake:4 /usr/lib64/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:617:in `call’ /usr/lib64/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:617:in `execute’ /usr/lib64/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:612:in […]

什么。:格式意味着rake路线

我输入了rake路线,我得到了一堆这样的url – /articles/:id(.:format) 我的问题是 – .:format是什么意思? 从Rails指南路由文章中不清楚,并且在StackOverflow或google上没有其他有用的匹配.:format 。 有一个类似的格式是/:controller(/:action(/:id(.:format))) ,我也不明白。 谢谢 编辑跟进问题 – 如果我只想路由HTML页面。 最佳做法是在路由中指定类似。:html的内容或使用。:format并为format.html写一个respond_to块? 在后一种情况下,是否会忽略所有其他格式?

耙子流产了! 你已经激活了rake 10.0.2,但是你的Gemfile需要rake 0.9.2.2

我正在尝试“rake db:migrate”,它给了我这个错误。 Andy:AcademyAir Andy$ rake db:migrate /Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr in PATH, mode 040777 rake aborted! You have already activated rake 10.0.2, but your Gemfile requires rake 0.9.2.2. Using bundle exec may solve this. /Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler/runtime.rb:31:in `block in setup’ /Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler/runtime.rb:17:in `setup’ /Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler.rb:116:in `setup’ /Users/Andy/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.2.2/lib/bundler/setup.rb:7:in `’ /Users/Andy/Desktop/AcademyAir/config/boot.rb:6:in `’ /Users/Andy/Desktop/AcademyAir/config/application.rb:1:in `’ /Users/Andy/Desktop/AcademyAir/Rakefile:5:in `’ (See full […]

在rake中销毁Rails 3对象?

我在这里遇到一个简单的问题。 我正在构建一个管理优惠券数据库的应用程序,每个优惠券都有一个到期日期。 我正在尝试建立一个rake任务,删除过期的优惠券。 rakefile中的相关代码如下所示: desc “Deletes expired offers from the database.” task :purge_expired => :environment do today = Date.today.to_s Offer.where(‘expires_on < ?', today).destroy end 然而,这失败,出现以下错误消息: rake aborted! wrong number of arguments (0 for 1) 我只是不确定为什么。 需要什么论据? 作为一个实验,我发现这很好: desc “Deletes expired offers from the database.” task :purge_expired => :environment do today = Date.today.to_s puts Offer.where(‘expires_on < […]

冻结Railsgem版本

我试图冻结我的Rails gem版本,因为日复一日,某些或其他gem版本会更新,有时我需要更新代码。 我试过rake rails:freeze:gems但这给了我错误: rake aborted! Don’t know how to build task ‘rails:freeze:gems’

Errno :: EACCES:运行rake test:models时,权限被拒绝@ unlink_internal

我正在玩rails 4.我刚刚为我的模型创建了非常简单的测试但是当我尝试执行“rake test:models”时,我得到以下错误: C:\rails\project>rake test:models DL is deprecated, please use Fiddle rake aborted! Errno::EACCES: Permission denied @ unlink_internal – /tmp/db/new.sqlite3 C:/rails/project/test/test_helper.rb:3:in `’ C:/rails/project/test/models/admin_test.rb:1:in `’ Tasks: TOP => test:models (See full trace by running task with –trace) 我的测试数据库配置如下所示: test: adapter: sqlite3 database: /tmp/db/new.sqlite3 pool: 5 timeout: 5000 “/ tmp / db”是我个人笔记本电脑上完全访问权限的目录。 什么想法可能是这个问题的根源?