2017-03-17 7 views
0

私のアプリケーションはローカルで動作しますが、私はHerokuにプッシュしようとしています。私はRails 5アプリケーションでmLabとMongoidを使用しています。私が入力した場合:Herokuエラー - NameError:初期化されていない定数PracticeApp :: Application :: Mongoid

git push heroku master

を私は次のエラーを取得:

r.rb:102:in `load_rake_tasks!': Could not detect rake tasks (LanguagePack::Helpers::RakeRunner::CannotLoadRakefileError) 
remote: ensure you can run `$ bundle exec rake -P` against your app 
remote: and using the production group of your Gemfile. 
remote: rake aborted! 
remote: NameError: uninitialized constant PracticeApp::Application::Mongoid 
remote: /tmp/build_7a8e6644d3ecbd6336fe612855f87f95/practice_app/config/application.rb:21:in `<class:Application>' 
remote: /tmp/build_7a8e6644d3ecbd6336fe612855f87f95/practice_app/config/application.rb:20:in `<module:PracticeApp>' 
remote: /tmp/build_7a8e6644d3ecbd6336fe612855f87f95/practice_app/config/application.rb:19:in `<top (required)>' 
remote: /tmp/build_7a8e6644d3ecbd6336fe612855f87f95/practice_app/Rakefile:4:in `require_relative' 
remote: /tmp/build_7a8e6644d3ecbd6336fe612855f87f95/practice_app/Rakefile:4:in `<top (required)>' 

bundle exec rake -Pが正常に動作します。

require_relative 'boot' 

require "rails" 
# Pick the frameworks you want: 
require "active_model/railtie" 
require "active_job/railtie" 
# require "active_record/railtie" 
require "action_controller/railtie" 
require "action_mailer/railtie" 
require "action_view/railtie" 
require "action_cable/engine" 
require "sprockets/railtie" 
require "rails/test_unit/railtie" 

# Require the gems listed in Gemfile, including any gems 
# you've limited to :test, :development, or :production. 
Bundler.require(*Rails.groups) 

module PracticeApp 
    class Application < Rails::Application 
    Mongoid.load!("./config/mongoid.yml", :production) 
    end 
end 

マイrakefile:

ここ

が私のconfig/application.rbファイルであり、それがここで必要なの場合

require_relative 'config/application' 

Rails.application.load_tasks 

mongoid.ymlの生産一部です:

# mongoid 
# 
production: 
    clients: 
    default: 
    uri: mongodb://<username>:<password>@ds133340.mlab.com:33340/okclone 

    options: 
     connect_timeout: 15 

注:私は実際のユーザー名とパスワードをuri abああ。

そして、私のgemfile、それが関連しています場合:

source 'https://rubygems.org' 

gem 'rails',  '5.0.1' 
gem 'puma',   '3.4.0' 
gem 'sass-rails', '5.0.6' 
gem 'uglifier',  '3.0.0' 
gem 'coffee-rails', '4.2.1' 
gem 'jquery-rails', '4.1.1' 
gem 'turbolinks', '5.0.1' 
gem 'jbuilder',  '2.4.1' 

group :development, :test do 
    gem 'mongoid', '~> 6.1.0' 
    gem 'bson_ext' 
    gem 'byebug', '9.0.0', platform: :mri 
end 

group :development do 
    gem 'web-console',   '3.1.1' 
    gem 'listen',    '3.0.8' 
    gem 'spring',    '1.7.2' 
    gem 'spring-watcher-listen', '2.0.0' 
end 

group :test do 
    gem 'rails-controller-testing', '0.1.1' 
    gem 'minitest-reporters',  '1.1.9' 
    gem 'guard',     '2.13.0' 
    gem 'guard-minitest',   '2.4.4' 
end 

group :production do 
    gem 'rails_12factor' 
end 

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem 
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 

編集:私はまた私のMLAB URIで

heroku config:set PROD_MONGODB = mongodb://dbuser:[email protected]:port1,host2:port2/dbname

を実行しようとしたが、問題を解決していないようでしたが、中に追加しました。

+1

オハイオ州、okです。 – xeno7

答えて

1

問題は私のgemfileであることが判明しました。 mongoidとbsonの宝石はテストと開発の下にあるだけなので、生産時にはアクセスできませんでした。ここに更新されたgemfileがあります:

source 'https://rubygems.org' 

    gem 'rails',  '5.0.1' 
    gem 'puma',   '3.4.0' 
    gem 'sass-rails', '5.0.6' 
    gem 'uglifier',  '3.0.0' 
    gem 'coffee-rails', '4.2.1' 
    gem 'jquery-rails', '4.1.1' 
    gem 'turbolinks', '5.0.1' 
    gem 'jbuilder',  '2.4.1' 
    gem 'mongoid', '~> 6.1.0' 
    gem 'bson_ext' 

    group :development, :test do 
     gem 'byebug', '9.0.0', platform: :mri 
    end 

    group :development do 
     gem 'web-console',   '3.1.1' 
     gem 'listen',    '3.0.8' 
     gem 'spring',    '1.7.2' 
     gem 'spring-watcher-listen', '2.0.0' 
    end 

    group :test do 
     gem 'rails-controller-testing', '0.1.1' 
     gem 'minitest-reporters',  '1.1.9' 
     gem 'guard',     '2.13.0' 
     gem 'guard-minitest',   '2.4.4' 
    end 

    group :production do 
     gem 'rails_12factor' 
    end 

    # Windows does not include zoneinfo files, so bundle the tzinfo-data gem 
    gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 
関連する問題