2015-02-05 6 views
6

Jestem dość nowy w Rubim i warunki wdrażania aplikacji za pomocą narzędzi zdalnych. Próbowałem wdrożyć moją aplikację na bezpłatnym koncie openshift. I używam konotacji aplikacji.Błąd "instalacji pakietu" Ruby na Openshift

Kiedy uruchomić aplikację i uzyskać ten błąd:

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

Więc próbuję uruchomić bundle exec ale mam kolejny błąd:

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 

myślę, że może to być spowodowane użyłem Ruby 2.1. 5 na lokalnym i Open shift uruchamia Ruby 2.0 domyślnie.

Miałem foud ten temat How can I force a bundle install on OpenShift Online when my RAILS_ENV is set to development? , ale nie wiem, czy robię to dobrze. Nie wiem nawet, gdzie umieścić ten plik pre_build. Próbowałem umieścić go pod /var/lib/openshift/xxxxxxxxxxxxxxxxxxxxxxxxxx/app-root/runtime/repo/.openshift/action_hooks/. Ale nie jestem pewien, czy runtime ma odpowiednie repozytorium.

EDIT 1:

to, że mój 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] 

ROZWIĄZANIE:

Jak @Rajarshi Das powiedział musiałem zmienić

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

ja nto

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

Nie wiem dokładnie dlaczego. Być może niektóre problemy z składnią, ponieważ korzystałem z wersji Ruby 2.1.5 na komputerze lokalnym i musiałem używać wersji 2.0.0 podczas produkcji. A potem musiałem uruchomić gem install rails, mimo że użyłem szybkiego uruchamiania szyn. W końcu musiałem ręcznie dodać do Gemfile gem 'nokogiri'. Wreszcie mogłem uruchomić bundle install i aplikacja zaczęła działać.

+0

myślę, że musi być mój repozytorium git. Formularz, który pobieram pliki dla bulid, a nie repozytorium na serwerze openshift. Bu jak ustawić go na wdrożenie rails 2.1? –

+0

Mam ten sam problem. Jakie zmiany trzeba było wprowadzić, aby uruchomić aplikację przy użyciu 'bundle exec' –

+0

Jestem całkiem nowy w Ruby. Więc większość moich działań strzelała w ciemności. Myślę, że powinieneś spróbować zainstalować pakiet. Domyślam się, że instalacja pakietu używa Gemfile i pakietu exec używa pliku .lock. –

Odpowiedz

8

można po prostu rozwiązać ten błąd wykonując sposób

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

Na platformach

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

Usuń Gemfile.lock jak You have already activated rack 1.5.2, but your Gemfile requires rack 1.6.0

Następnie sprawdź bundle install

+0

Nadal błąd "błąd składni", nieoczekiwany ":", oczekujący $ end grupa:: doc do'. Umieściłem mój Gemfile powyżej. Jesteś pewien, że nie jest to związane z wersją Ruby? –

+0

Proszę sprawdzić mój post aktualizacji powinien to być 'group' not' group:' –

+0

Musiałem zmienić także tę linię 'gem 'tzinfo-data', platformy: [: mingw,: mswin,: jruby]' na 'platformy [ : mingw,: mswin,: jruby] do gem 'tzinfo-data' koniec'. Ale teraz pojawia się kolejny błąd: '/usr/lib/ruby/gems/1.8/gems/bundler-1.3.5/lib/bundler/dsl.rb:224:in '_normalize_options': niezdefiniowana metoda 'to_sym' dla [: mingw,: mswin,: jruby]: Array (NoMethodError) '' Wystąpił błąd w twoim Gemfile, a program Bundler nie może kontynuować. –

5

I ssh do $ app_root katalogu

gem install rack

pracował

+0

pomógł mi tii –

0

Upewnij się, że oddział jest używany do wdrożenia

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

Następnie w aktualizację klejnotów środowisko programistyczne

# bundle install

Zmieni Gemfile. blokada

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

Odczekać aż rozmieszczenia jest aktualizowana

0

próbowałem większość rozwiązań tutaj, ale nadal utknął. Problem polegał na tym, aby zainstalować pakiet dla bieżącej wersji ruby. Będziesz chciał zrobić gem install bundler w app-root/runtime/repo. Następnie RAILS_ENV=production bundle exec rails console

Można odwołać się do tego answer

Powiązane problemy