我在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
我正在使用Eclipse的Aptana 3插件来进行Ruby on Rails开发.我正在尝试使用ruby-debug-ide19 gem在Eclipse中进行调试.我通过转到Run-> Debug As-> Ruby Application来启动调试会话.
这适用于最简单的场景.但是,如果我尝试访问我的任何模型,lib中的类等,它将无法工作,因为我的开发环境在调试之前没有被加载.如何在进入调试模式之前加载我的开发环境?就像我rails console在命令行上执行操作时发生的情况一样.
如果我可以使这个工作,看起来它会非常好.任何帮助表示赞赏!
是否可以使用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) 在您的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配置自定义记录器,所以我不必每次都指定使用哪些标签?我确信我可以为此创建一个自定义类,但有没有内置的方法来做到这一点?谢谢!
ruby ×2
activerecord ×1
aptana ×1
capybara ×1
eclipse ×1
ember-rails ×1
logging ×1
rspec-rails ×1