5

我正在开发一个当前部署到 heroku 的简单应用程序- 它使用 mongoid、设备并且可以在 localhost 中非常轻松地创建用户登录,但不能在 heroku 的生产环境中创建。可以尝试创建一个账号,提交后报错。

我认为我用于生产的 mongoid.yml 需要更改,但我不知道如何更改。

heroku config的有以下几点:

 === Config Vars for bookfoo
DATABASE_URL:        postgres://jeibucpexp:bVZzGaGPUeGylwmA7dyE@ec2-107-20-186-97.compute-1.amazonaws.com/jeibucpexp
GEM_PATH:            vendor/bundle/ruby/1.9.1
LANG:                en_US.UTF-8
MONGOHQ_URL:         mongodb://heroku:14bc6d476e6449c952d6350b07e89643@alex.mongohq.com:10065/app6153931
MONGOLAB_URI:        mongodb://heroku_app6153931:og03dk0hdrj7r8lsit51k6ah9n@ds037097-a.mongolab.com:37097/heroku_app6153931
PATH:                bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin
RACK_ENV:            production
RAILS_ENV:           production
SHARED_DATABASE_URL: postgres://jeibucpexp:bVZzGaGPUeGylwmA7dyE@ec2-107-20-186-97.compute-1.amazonaws.com/jeibucpexp

mongoid.yml 具有 Heroku 中建议的以下内容:

development:
  sessions:
    default:
      database: bookfoo_app_development
      hosts:
        - localhost:27017
      options:
        consistency: :strong
  options:
test:
  sessions:
    default:
      database: bookfoo_app_test
      hosts:
        - localhost:27017
      options:
        consistency: :strong
production:
  sessions:
    default:
      uri: <%= ENV['MONGOHQ_URL'] %>
    options:
      skip_version_check: true
      safe: true

我的 gemfile 有以下内容:

source 'https://rubygems.org'

gem 'rails', '3.2.3'

group :development, :test do
  gem 'sqlite3'
    gem 'rspec-rails'
end

group :test do
    gem 'database_cleaner'
    gem 'mongoid-rspec'
    gem 'factory_girl_rails'
    gem 'email_spec'
    gem 'capybara'
    gem 'launchy'
end

group :production do
  gem 'thin'
end

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem "mongoid", :git => "git://github.com/mongoid/mongoid.git"
gem "bson_ext"
gem "devise"

git push heroku master它给了我以下提示之后:

There is a configuration error with the current mongoid.yml.
       Problem:
       No database provided for session configuration: :options.
       Summary:
       Each session configuration must provide a database so Mongoid knows where the default database to persist to. What was provided was: {"skip_version_check"=>true, "safe"=>true}.
       Resolution:
       If configuring via a mongoid.yml, ensure that within your :options section a :database value for the session's default database is defined.
       Example:
       \_\_development:
       \_\_\_\_sessions:
       \_\_\_\_\_\_options:
       \_\_\_\_\_\_\_\_database: my_app_db
       \_\_\_\_\_\_\_\_hosts:
       \_\_\_\_\_\_\_\_\_\_- localhost:27017
4

1 回答 1

5

mongoid.yml 应该是这样(我的缩进是错误的):

production:
  sessions:
    default:
      uri: <%= ENV['MONGOHQ_URL'] %>
      options:
        skip_version_check: true
        safe: true
于 2012-08-13T10:00:07.303 回答