【问题标题】:Mongoid Replication Config causing ArgumentErrorMongoid 复制配置导致 ArgumentError
【发布时间】:2012-05-17 13:03:23
【问题描述】:

我将复制添加到我的 mongoid 生产部分,如下所示:

production:
  hosts:
    - - <%= ENV['MONGO_URL1'] %>:<%= ENV['MONGO_PORT'] %>
    - - <%= ENV['MONGO_URL2'] %>:<%= ENV['MONGO_PORT'] %>
  read: :secondary
  username: <%= ENV['MONGO_USERNAME'] %>
  password: <%= ENV['MONGO_PASSWORD'] %>
  database: <%= ENV['MONGO_DATABASE'] %>
  max_retries_on_connection_failure: 10

这在 Heroku 的生产环境中有效,但在本地,它会导致我的服务器在开始出现错误时失败:

ROOT /Users/bashar/rails-projects/my-project /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/syck.rb:135:in load': syntax error on line 13, col 9: - - :' (ArgumentError) 从 /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/syck.rb:135:in load' from /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/mongoid-2.4.7/lib/mongoid/railtie.rb:83:in block in '来自 /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/initializable.rb:30:in instance_exec' from /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/initializable.rb:30:in run' 来自 /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/initializable.rb:55:in block in run_initializers' from /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/initializable.rb:54:in each' 来自 /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/initializable.rb:54:in run_initializers' from /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/application.rb:96:in initialize!从 /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/railtie/configurable.rb:30:in method_missing' from /Users/bashar/rails-projects/my-project/config/environment.rb:5:in ' 来自 /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in require' from /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in阻止来自 /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in block in load_dependency' from /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:640:in new_constants_in' 来自 /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in load_dependency' from /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in要求'来自 /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/application.rb:83:in require_environment!' from /Users/bashar/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/commands.rb:39:in ' 来自 script/rails:6:in require' from script/rails:6:in'  ~/rails-projects/my-project/ [master]

我正在使用 导轨 3.1.3 蒙戈 1.6.2 Mongoid 2.4.9 MongoDB 2.0.2版

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 mongoid


    【解决方案1】:

    您的配置文件应如下所示:

    production:
      hosts:
        - <%= ENV['MONGO_URL1'] %>:<%= ENV['MONGO_PORT'] %>
        - <%= ENV['MONGO_URL2'] %>:<%= ENV['MONGO_PORT'] %>
      read: :secondary
      username: <%= ENV['MONGO_USERNAME'] %>
      password: <%= ENV['MONGO_PASSWORD'] %>
      database: <%= ENV['MONGO_DATABASE'] %>
      max_retries_on_connection_failure: 10
    

    它会被解决为:

    hosts: [ 'host1:port1', 'host2:port2']
    

    将主机和端口作为两个不同的东西时,您需要双数组:

    hosts: [ ['host1', 'port1'], ['host2', 'port2'] ]
    

    【讨论】:

    • 感谢您的解释。由于某种原因,一个破折号不起作用,但我按照您直接建议的方式形成了数组,并且有效。我猜我的一个 gem 中存在一些版本支持问题
    • 好吧,这很奇怪。它在本地工作,但现在在生产中失败了。对面:/
    • @BasharAbdullah 您的本地开发环境是否可能与生产环境没有相同的技术堆栈(gem 版本、rails、mongodb 等),这可能会导致问题。我将首先查看差异并尝试从那里隔离问题。
    • 很有可能。谢谢。这样做
    猜你喜欢
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2021-01-22
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多