小编Dav*_*d W的帖子

是否仍然可以在导轨4中使用测试单元?

从Rails 3.2升级到Rails 4后,我的应用程序正常运行,但我的测试用测试单元编写,是一场灾难.

据传Minitest与测试单元"兼容".但是,如果我尝试使用(现在捆绑的)Minitest,那么存在一系列差异 - 从assert*语句名称和参数到(很明显)许多其他东西既大又微妙.

如果我试图避免使用Minitest并尝试将我的测试单元gem保留在我的Gemfile中,则rake测试会爆炸,说,

undefined method 'refute_predicate' for class 'ActiveSupport::TestCase'
Run Code Online (Sandbox Code Playgroud)

这是因为已经打电话

require 'rails/test_help'
Run Code Online (Sandbox Code Playgroud)

:(

我一直在寻找,但还没有想出任何继续使用测试单元的方法.唯一的替代方案似乎是(对我们来说,大规模)重构我们的测试代码,因为我们80%的测试都会以某种方式破坏,或者Minitest与测试单元的不兼容性.

然而阅读http://weblog.rubyonrails.org/2013/6/25/Rails-4-0-final/http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-3- 2-to-rails-4-0我发现实质上没有提到这一点 - 我觉得必须遗漏一些东西.

是否有可能使Minitest更系统地与测试单元兼容?或者继续在Rails 4中使用测试单元?

ruby ruby-on-rails testunit minitest ruby-on-rails-4

10
推荐指数
1
解决办法
2218
查看次数

是否有任何现有的Java库允许您从纬度/经度快速,内存中查找zipcodes(奖金,州和城市)?

我见过各种语言的许多所谓的"反向地理编码"库; 所有这些都依赖于通过REST或类似方法调用外部提供程序.但是,如果每秒必须处理数千个请求,则无法调用REST提供程序.

另一方面,问题应该很容易解决 - 基于CSV的数据库可以免费获得这些信息.问题是编写高效且经过良好测试的内存中搜索实现的时间和成本,而不是下载或购买现有的搜索实现.

经过很多寻找后我找不到任何东西,但我无法相信不可能有一个.是否有预先编写的库可以执行此操作?

这个问题:

给出纬度/经度的最快方法(纬度,城市,州)

是最接近的,但基本上表明如何编写解决方案,而不是现成的任何东西.但每个人都必须使用一些库.每天十几个人一定有这个问题.

java latitude-longitude reverse-geocoding mkreversegeocoder

6
推荐指数
1
解决办法
1232
查看次数

在rails3/jruby中,间歇性地导致此错误的原因是什么?SAVEPOINT active_record_1不存在

当一个人测试系统时,不会发生这些错误.但是通过jmeter测试,我可以非常可靠地重现一些错误:

ActiveRecord::JDBCError: SAVEPOINT active_record_1 does not exist: ROLLBACK TO SAVEPOINT active_record_1

Stack:

    gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract_adapter.rb:207:in `log'
    gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract_adapter.rb:200:in `log'
    gems/gems/activerecord-jdbc-adapter-1.2.1/lib/arjdbc/jdbc/adapter.rb:208:in `execute'
    gems/gems/activerecord-jdbc-adapter-1.2.1/lib/arjdbc/mysql/adapter.rb:156:in `rollback_to_savepoint'
    gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/database_statements.rb:179:in `transaction'
    gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/database_statements.rb:171:in `transaction'
    gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:207:in `transaction'
    gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:290:in `with_transaction_returning_status'
    gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:240:in `save'
    gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:251:in `rollback_active_record_state!'
    gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:239:in `save'
    ...(our code that simply calls save on a new instance of a model class)...
Run Code Online (Sandbox Code Playgroud)

我们不是嵌套事务,甚至没有明确地使用它们.我发现此错误消息存在一个现有错误,但它不相关; 我们没有截断或做任何DDL工作.仅仅创建一个记录并保存它.

我们使用Rails 3.0.10,JRuby 1.6.5,activerecord-jdbcmysql-adapter,使用Warbler 1.3.2进行了警告,并通过Elastic Beanstalk在64位Tomcat 7/Amazon RDS上使用单个Mysql实例v5.1.57进行部署.我们为config.threadsafe设置了! - 这感觉就像在ActiveRecord的内容中出现某种类型的种族 - 但ActiveRecord应该在线程安全中工作,不是吗?

最后一点:我担心这是一个JRuby或Warbler问题,因为如果我们从JRuby切换到MRI Ruby 1.9,我们就无法重现这个问题.

ruby jruby warbler ruby-on-rails-3 amazon-elastic-beanstalk

5
推荐指数
1
解决办法
566
查看次数