相关疑难解决方法(0)

Unicorn在资产预编译期间触发mongoid错误

我有一个使用在Heroku上运行的Mongoid 3的rails应用程序.我刚刚更新它以使用Unicorn.当我尝试将其部署到Heroku时,我收到以下错误:

Running: rake assets:precompile
rake aborted!
   undefined method `match' for nil:NilClass
   /tmp/build_3nnbzpfmnjpns/vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.21/lib/mongoid/sessions/mongo_uri.rb:49:in `initialize'
Run Code Online (Sandbox Code Playgroud)

完整的堆栈跟踪可以在http://pastebin.com/8YcJHEmS找到

但是如果我从我的Gemfile中删除Unicorn,资产编译就会成功.查看Mongoid代码,我可以看到当mongoid.yml文件被解析时发生错误,但我无法弄清楚为什么Unicorn会导致失败.我的mongoid.yml文件看起来像这样:

production:
  sessions:
    default:
      uri: <%= ENV['MONGOHQ_URL'] %>
      options:
        skip_version_check: true
        safe: true
Run Code Online (Sandbox Code Playgroud)

我的Gemfile:

source 'https://rubygems.org'
ruby '1.9.3'

gem 'rails', '3.2.11'
gem 'thin'

group :assets do
  gem 'sass-rails',   '~> 3.2'
  gem 'coffee-rails', '~> 3.2'
  gem 'uglifier', '>= 1.0.3'
  gem "twitter-bootstrap-rails", '>=2.1.8'
  gem "bootstrap_form"

end

gem "jquery-rails"
gem 'jquery-ui-rails', "3.0.1"

gem 'newrelic_rpm'
gem "httparty"
gem "resque"
gem "resque-loner"
gem "unicorn", "4.4.0"
gem "mongoid", "~> …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku unicorn ruby-on-rails-3 mongoid3

11
推荐指数
2
解决办法
1436
查看次数

Mongoid在ruby 1.9.3上失败了

所以我正在玩mongo的东西.创建了一个新的heroku应用程序,为它添加了一个mongolab选项,但每个mongoid方法都失败了.

我用Google搜索了,看起来这个问题在1.9.3之前的ruby很常见,但我运行的是1.9.3.

这是最简单的失败样本:

require 'sinatra'
require 'mongoid'
require 'json'
require "sinatra/reloader" if development?

Mongoid.load!("mongoid.yml")

class Company
    include Mongoid::Document

    field :code, type: String
    field :sector, type: String
    field :share_id, type: Integer
    field :jse_code, type: Integer
end

get '/' do
    "Hello" 
end

get '/company' do
    Company.exists?
end
Run Code Online (Sandbox Code Playgroud)

我在本地运行(对mongolab db)或在heroku上运行,我得到同样的错误:

12:22:33 web.1  | NoMethodError - undefined method `match' for nil:NilClass:
12:22:33 web.1  |   /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/mongo_uri.rb:49:in `initialize'
12:22:33 web.1  |   /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/factory.rb:103:in `new'
12:22:33 web.1  |   /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/factory.rb:103:in `parse'
12:22:33 web.1  |   /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/factory.rb:62:in `create_session'
12:22:33 web.1  | …
Run Code Online (Sandbox Code Playgroud)

heroku mongodb mongoid mlab

8
推荐指数
2
解决办法
2849
查看次数