Rails 3.0是一只严肃的狗.我已经在Rails上开发了5年,而且启动时从未如此慢.特别是,测试需要永远在带有SSD的顶级MacBook上进行自举,因此迭代周期会受到严重影响.每次开始测试我都需要阅读一篇文章.这是疯狂而不是"敏捷".我不妨编译.
这是我最终从Rails继续前进的主要动机 - 当我有机会的时候.
如果有人有解决方案,请提供.我知道很多人都患有这个问题.
我不使用rspec - 我知道有一个解决方案来帮助测试rspec.
我正在使用faster_require和rails-dev-boost,但没有重大影响.
我在ruby 1.9.2并且需要.在具有4Gb RAM和SSD的双核2.13 Ghz MacBook Air上进行一次非常简单的控制器测试需要26秒!为什么!?
我正在使用Rails,backbone.js(现在学习这个).假设您有两种型号,Car和Engine.
var Car = Backbone.Model.extend({
initialize: function() {
if(this.get('engine') != undefined) this.engine = new Engine(this.get('engine'));
}
}
var redCar = new Car({
'color': 'red',
// The controller nests the model
'engine': {
'horsepower': '350'
}
});
redCar.save()
Run Code Online (Sandbox Code Playgroud)
发送engine_attributes给控制器的正确方法是什么?(汽车accepts_nested_attributes_for :engine,所以它期待engine_attributes.)我是否覆盖了Backbone sync()?嵌套模型是否有更好的约定?
也许我不应该从控制器返回嵌套模型,或者返回engine_attributes而不是engine?
另一方面,我正在使用Rails respond_with(@car, :include => :engine)(同样如此@car.to_json(:include => :engine).事实上,这种情况适用于引擎属性engine但模型预期engine_attributes似乎是矛盾的 - 我从来没有确定如何调和它.
我正在寻找类似于Rails active_merchant的Java支付网关库或许多其他平台上可用的库.我很惊讶我找不到一个.我想要一些支持主要网关和提供商的东西,如Paypal,谷歌,亚马逊和一些直接的商家帐户提供商,如Authorize.net.
开源世界中是否存在这样的事情?
我有一个导入实用程序,我想用于在heroku上创建记录.
我想用它从我的开发机器上的文件导入数据,而不必将文件检入存储库.有没有办法用rake任务或heroku gem来做到这一点?
我可以将文件上传到可能超时的网络表单中,或者我可以将文件存储在S3上,但这似乎相当过分.
有什么简单的方法吗?
抛出ActiveRecord :: Rollback可以正常工作,但不能在测试中使用.
我之前遇到过这个问题,我现在又有了这个问题,并且由于某种原因无法找到其他人遇到此问题的记录.
我这是因为每次测试运行时测试都会执行回滚,并且大多数数据库不支持嵌套的rolllback.但是,我不能成为唯一一个涉及事务回滚的测试用例的人,所以也许我做错了.
以下测试用例失败(使用shoulda库,尽管相同的测试失败,基本的Test :: Unit):
require 'test_helper'
class RollbackTest < ActiveSupport::TestCase
context "create a record and throw rollback" do
setup do
User.transaction do
User.create!
raise ActiveRecord::Rollback
end
end
should_not_change("count of users") { User.count }
end
end
Run Code Online (Sandbox Code Playgroud)
但是在控制台上:
?> User.transaction do
?> User.create!
>> raise ActiveRecord::Rollback
>> end
=> nil
>> User.count
=> 4
>> User.transaction do
?> User.create!
>> raise ActiveRecord::Rollback
>> end
=> nil
>> User.count
=> 4
Run Code Online (Sandbox Code Playgroud)