2015-02-05 8 views
6

Ich bin ziemlich neu in Ruby und Bedingungen der Bereitstellung von App über Remote-Tools. Ich habe versucht, meine App auf dem kostenlosen openshift-Konto bereitzustellen. Und ich kann keine Anwendung ausführen.Ruby "Paket installieren" Fehler auf Openshift

Wenn ich Anwendung ausführen bekomme ich diesen Fehler:

You have already activated rack 1.5.2, but your Gemfile requires rack 1.6.0. 
Using bundle exec may solve this. (Gem::LoadError) 

Also versuche ich bundle exec zu laufen, aber ich habe einen anderen Fehler:

Gemfile syntax error: 
/var/lib/openshift/xxxxxxxxxxxxxxxxxxxxxxxxxx/app-root/runtime/repo/Gemfile:24: 
syntax error, unexpected ':', expecting $end 
gem 'sdoc', '~> 0.4.0', group: :doc 

Ich denke, es könnte sein, weil ich Rubin verwendet 2.1. 5 bei lokaler und offener Verschiebung läuft Ruby 2.0 standardmäßig.

Ich hatte dieses Thema foud How can I force a bundle install on OpenShift Online when my RAILS_ENV is set to development? aber ich weiß nicht, ob ich es richtig mache. Ich weiß nicht einmal, wo ich diese pre_build Datei ablegen soll. Ich habe versucht, es unter /var/lib/openshift/xxxxxxxxxxxxxxxxxxxxxxxxxx/app-root/runtime/repo/.openshift/action_hooks/ zu setzen. Aber ich bin mir nicht sicher, ob runtime richtig repo ist.

EDIT 1:

Das es mein Gemfile:

source 'https://rubygems.org' 


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '4.2.0' 
# Use sqlite3 as the database for Active Record 
gem 'sqlite3' 
# Use SCSS for stylesheets 
gem 'sass-rails', '~> 5.0' 
# Use Uglifier as compressor for JavaScript assets 
gem 'uglifier', '>= 1.3.0' 
# Use CoffeeScript for .coffee assets and views 
gem 'coffee-rails', '~> 4.1.0' 
# See https://github.com/sstephenson/execjs#readme for more supported runtimes 
# gem 'therubyracer', platforms: :ruby 

# Use jquery as the JavaScript library 
gem 'jquery-rails' 
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks 
gem 'turbolinks' 
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
gem 'jbuilder', '~> 2.0' 
# bundle exec rake doc:rails generates the API under doc/api. 
group: :doc do 
    gem 'sdoc', '~> 0.4.0' 
end 

# Use ActiveModel has_secure_password 
# gem 'bcrypt', '~> 3.1.7' 

# Use Unicorn as the app server 
# gem 'unicorn' 

# Use Capistrano for deployment 
# gem 'capistrano-rails', group: :development 

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

    # Access an IRB console on exception pages or by using <%= console %> in views 
    gem 'web-console', '~> 2.0' 
end 

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

LÖSUNG:

Wie @Rajarshi Das sagte ich

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

ändern musste i nto

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

Ich weiß nicht genau warum. Vielleicht einige Syntaxprobleme, da ich Ruby 2.1.5 lokal verwendete und 2.0.0 für die Produktion verwenden musste. Und danach musste ich gem install rails laufen lassen, obwohl ich Rails schnell gestartet habe. Schließlich musste ich manuell zu Gemfile gem 'nokogiri' hinzufügen. Schließlich konnte ich bundle install laufen lassen und Anwendung begann zu arbeiten.

+0

Ich denke, es ist meine git-Repository sein müssen. Form, die ich Dateien für Bulid, nicht Repository auf OpenShift-Server herunterladen. Wie stelle ich es für die Bereitstellung von Schienen 2.1 ein? –

+0

Ich habe das gleiche Problem. Welche Änderungen mussten Sie vornehmen, um die Anwendung mit 'bundle exec' auszuführen? –

+0

Ich bin relativ neu in Ruby. Die meisten meiner Aktionen drehten also im Dunkeln. Ich denke du solltest das Bundle installieren. Ich nehme an, dass Bundle Install verwendet Gemfile und Bundle Exec verwendet .lock-Datei. –

Antwort

8

Sie können einfach den Fehler beheben durch folgende

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

Für Plattformen

platforms :jruby, :mingw, :mswin do 
    gem 'tzinfo-data' 
end 

entfernen Gemfile.lock als You have already activated rack 1.5.2, but your Gemfile requires rack 1.6.0

Dann bundle install überprüfen

+0

Immer noch der Smae-Fehler 'Syntaxfehler, unerwartet ':', erwartet $ end Gruppe:: doc do'. Ich hatte mein Gemfile oben platziert. Sind Sie sicher, dass dies nicht mit der Ruby-Version zusammenhängt? –

+0

Bitte überprüfen Sie meine Update-Post sollte es 'Gruppe' nicht' Gruppe: ' –

+0

Ich musste auch diese Linie' Gem 'tzinfo-Daten', Plattformen: [: mingw,: mswin,: jruby] 'in' Plattformen [ändern : mingw,: mswin,: jruby] do gem 'tzinfo-daten' ende. Aber jetzt bekomme ich einen weiteren Fehler: '/usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/dsl.rb:224:in'_normalize_options ': undefinierte Methode' to_sym 'für [: mingw,: mswin,: jruby]: Array (NoMethodError) '' Es gab einen Fehler in deiner Gemdatei, und Bundler kann nicht fortfahren. ' –

5

ich ssh $ app_root Verzeichnis

gem install rack

es funktionierte

+0

half mir für tii –

0

Stellen Sie sicher, dass Ihre Branche für den Einsatz in der Entwicklungsumgebung Update gems

# bundle install

Es wird sich ändern Gemfile

rhc app-configure --deployment-branch [BRANCH]

Dann

verwendet wird. Schloss

$ git add -A $ git commit -am "Updating gemfile" $ git push

Warten Sie, bis Deployment wird

aktualisiert
0

ich die meisten Lösungen versucht hier, aber ich habe immer noch fest. Das Problem bestand darin, das Paket für die aktuelle Version von Ruby zu installieren. Sie werden eine gem install bundler in App-Root/Runtime/Repo tun wollen. Dann RAILS_ENV=production bundle exec rails console

können Sie auf diese verweisen answer