2016-08-08 70 views
0

Ich habe zu Heroku geschoben, aber die Anwendung wird nicht ausgeführt. Ich sehe, dass es wegen des Dotenv Gems ist. Gibt es einen Weg dahin? Ich benötige das Juwel dot-env, um den Benutzernamen und das Kennwort für die Basisauthentifizierung zu verschlüsseln. Ich würde es vorziehen, kein Gerät oder etwas von dieser Komplexität zu verwenden, da dies eine einfache Anwendung ist.Anwendung geschoben zu Heroku aber nicht funktioniert wegen Dotenv Gem

Unten ist meine Heroku-Terminal-Ausgabe, nur Problem ist ich nicht wirklich wissen, wie man Fehler/lesen Sie die Ausgabe.

/app/config/application.rb:4:in `require': cannot load such file -- dotenv (LoadError) 
     from /app/config/application.rb:4:in `<top (required)>' 
     from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:141:in `require' 
     from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:141:in `require_application_and_environment!' 
     from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:67:in `console' 
     from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
     from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>' 
     from /app/bin/rails:9:in `require' 
     from /app/bin/rails:9:in `<main>' 





gem 'rails', '4.2.5' 

gem 'pg' 

gem 'sass-rails', '~> 5.0' 

gem 'uglifier', '>= 1.3.0' 

gem 'coffee-rails', '~> 4.1.0' 

gem 'will_paginate', '~> 3.1.0' 

gem 'jquery-rails' 

gem 'turbolinks' 

gem 'jbuilder', '~> 2.0' 

gem 'sdoc', '~> 0.4.0', group: :doc 

gem "font-awesome-rails" 

gem 'dotenv-rails', :groups => [:development, :test] 

gem 'will_paginate-bootstrap' 

gem "paperclip", "~> 5.0.0" 


group :development, :test do 
    # Call 'byebug' anywhere in the code to stop execution and get a debugger console 
    gem 'byebug' 
end 

group :development do 
    # Access an IRB console on exception pages or by using <%= console %> in views 
    gem 'web-console', '~> 2.0' 
    # gem 'dotenv-heroku' 

    # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 
    gem 'spring' 
end 

Antwort

1

Sie konfiguriert die dotenv Juwel nur für die development und test Umgebungen aktiviert werden. Daher wird die Rails-Anwendung abstürzen, weil es versucht, den Edelstein zu laden, aber es ist nicht verfügbar.

Sie wahrscheinlich enthalten manuell den dotenv Lade Code irgendwo in Ihrer Anwendung:

Dotenv::Railtie.load 

Sie müssen es entfernen (wie dotenv sich in der Ladeprozess injizieren, wenn der Edelstein geladen ist), oder wickeln Sie das Code innerhalb eines bedingten Block, es wird nur ausgeführt, wenn Dotenv

definiert ist
if defined? Dotenv 
    # .. 
end 

Sofern Sie nicht wirklich die Bibliothek manuell laden müssen (und Sie nicht im allgemeinen), dann einfach die explizite Anweisung entfernen, explained in the documentation.

dotenv in Ihrer Rails-Anwendung während der before_configuration Rückruf initialisiert, das ausgelöst wird, wenn die Anwendung konstant in config/application.rb mit Klasse Anwendung definiert ist < Rails :: Anwendung. Wenn Sie früher initialisieren möchten, können Sie Dotenv :: Railtie.load manuell aufrufen.

+0

Ich weiß nicht ob ich sie sofort laden muss, ich bin neu auf Schienen. Ich brauche sie nur, um die Standardauthentifizierung zu verwenden. Die einzige Zeile, die ich finden kann, ist in der Datei application.rb: 'require' dotenv '; Dotenv.load ".env.local", ".env. # {Rails.env}" "Wenn ich diese Zeile entferne, kann ich keine Rake-Assets ausführen: Vorkompilierung (das kann ein anderes Problem sein), aber wenn Sie verlieren könnten etwas Licht darauf, dass es fantastisch wäre. – user2026178

1

dotenv Juwel in development für Lastumgebungsvariablen aus .env in ENV verwendet.

und heroku verwendet production Umgebung. So müssen Sie nur diese Gemfile anziehen

gem 'dotenv-rails', :groups => [:development, :test] 

Hoffnung, dies wird Ihnen hilft.

+0

Ich habe das in meiner Edelstein-Datei, aber muss ich es irgendwo in die Edelstein-Datei legen? Ich habe meine Schmuckdatei in den Änderungen hinzugefügt. – user2026178

+0

nur in die Entwicklungsgruppe ....... –

1

dotenv dient zur Verwaltung Ihrer Umgebungsvariablen in Ihrer Entwicklungsumgebung. Sie müssen diese Variablen manuell auf Heroku erstellen.

gem 'dotenv-rails', :groups => [:development, :test] 

Jedoch ist die Anwendung gestartet in Heroku in production Umgebung:

+0

Ich habe das getan. Also nicht sicher, ob da noch etwas falsch ist – user2026178