小编kst*_*715的帖子

Rspec请求规范期间Rails 4中的循环依赖性错误

我在Rails 4/Ruby 2上运行了一个应用程序.前端是用Ember开发的.

运行时rake spec,我得到以下异常.它似乎只发生在Rspec功能规范中(不是在开发模式下).此外,它通常只发生在我只运行一个功能规范时; 如果我运行整个测试套件,我通常不会收到错误.

由于对Rails的这种提交而发生错误:https: //github.com/rails/rails/commit/b33700f5580b4cd85379a1dc60fa341ac4d8deb2

但是,当然,我不知道这是真正的问题还是在调用堆栈中更深层次.我知道,如果我在Rails代码中做了一个小改动而不抛出那个错误,那么一切似乎都能正常工作并且我的测试通过了.但某些地方似乎正在尝试加载LocationsController,即使它已经加载了.

非常感谢任何帮助,因为这个让我真的很难过.

  1) Locations Creating locations
     Failure/Error: Unable to find matching line from backtrace
     RuntimeError:
       Circular dependency detected while autoloading constant LocationsController
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/dependencies.rb:460:in `load_missing_constant'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/dependencies.rb:183:in `const_missing'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/inflector/methods.rb:226:in `const_get'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/inflector/methods.rb:226:in `block in constantize'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/inflector/methods.rb:224:in `each'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/inflector/methods.rb:224:in `inject'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/inflector/methods.rb:224:in `constantize'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/dependencies.rb:534:in `get'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/activesupport/lib/active_support/dependencies.rb:565:in `constantize'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/actionpack/lib/action_dispatch/routing/route_set.rb:76:in `controller_reference'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/actionpack/lib/action_dispatch/routing/route_set.rb:66:in `controller'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/actionpack/lib/action_dispatch/routing/route_set.rb:44:in `call'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/actionpack/lib/action_dispatch/journey/router.rb:71:in `block in call'
     # /usr/local/rvm/gems/ruby-2.0.0-p195@nepco/bundler/gems/rails-783c6711a4b4/actionpack/lib/action_dispatch/journey/router.rb:59:in `each' …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails capybara rspec-rails ruby-on-rails-4 ember-rails

15
推荐指数
1
解决办法
3717
查看次数

在Aptana/Eclipse中调试Rails应用程序

我正在使用Eclipse的Aptana 3插件来进行Ruby on Rails开发.我正在尝试使用ruby-debug-ide19 gem在Eclipse中进行调试.我通过转到Run-> Debug As-> Ruby Application来启动调试会话.

这适用于最简单的场景.但是,如果我尝试访问我的任何模型,lib中的类等,它将无法工作,因为我的开发环境在调试之前没有被加载.如何在进入调试模式之前加载我的开发环境?就像我rails console在命令行上执行操作时发生的情况一样.

如果我可以使这个工作,看起来它会非常好.任何帮助表示赞赏!

ruby aptana eclipse ruby-on-rails

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

使用Rails ActiveRecord查询未保存的对象

是否可以使用Rail的ActiveRecord或其他类似方法查询未保存的更改?

下面是一个Ruby交互式会话的示例.我想看到的是,第四行显示'999'而不是'10'的结果.我习惯使用.NET和Entity Framework,其中可能有类似的东西.也许在Ruby中,有一种更好或不同的方式来做同样的事情.我显然可以在循环中加总和,但我发现查询语法更优雅.任何帮助表示赞赏.

i = Inventory.where(:product_id => 1)
i.sum(:available) => 10
i.first.available = 999
i.sum(:available) => 10
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails

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

Rails自定义标记记录器

在您的Rails配置文件中,您可以设置:

config.log_level = :debug
config.log_tags = [:uuid, lambda { |req| Time.now } ]
Run Code Online (Sandbox Code Playgroud)

但是,这仅在使用Rails.logger时有效.我知道您可以创建自定义标记记录器.但语法有点冗长:

logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
logger.tagged("BCX") { Logger.info "Stuff" }  
Run Code Online (Sandbox Code Playgroud)

无论如何我可以用log_tags配置自定义记录器,所以我不必每次都指定使用哪些标签?我确信我可以为此创建一个自定义类,但有没有内置的方法来做到这一点?谢谢!

logging ruby-on-rails

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