2017-03-29 42 views
7

Próbujesz wykonać jekyll na cygwin (x64) na Windowsie, gdy otrzymam ten błąd pomimo użycia przedrostka bundle exec.bundle exec - Już aktywowałeś json X, ale twój Gemfile wymaga json Y

Czy podczas wykonywania nie należy włączać zależności zdefiniowanej w Gemfile (tj. 1.8.6)?

Jakieś przemyślenia na temat tego, co dzieje się tutaj? Jestem całkowicie nowy w świecie klejnotów Ruby. Przyjrzałem się innym "Ty już aktywowałeś ..." wpisów pokazujących podobne wiadomości, ale odpowiedzi tam nie rozwiązały mojego problemu.

$ bundle exec Jekyll służyć

$ bundle exec jekyll serve 
/cygdrive/c/Users/mochapenguin/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:40:in 
`block in setup': You have already activated json 2.0.2, but your Gemfile requires json 1.8.6. 
Prepending `bundle exec` to your command may solve this. (Gem::LoadError) 

Environment

  • Cygwin x86_64 zainstalować na Windows 7
  • RVM zainstalowany na Cygwin
$ rvm -v 
rvm 1.29.0 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io/] 

$ ruby -v 
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-cygwin] 

Gemfile - dla projektu Jekyll

source 'https://rubygems.org' 

require 'json' 
require 'open-uri' 
versions = JSON.parse(open('https://pages.github.com/versions.json').read) 

gem 'github-pages', group: :jekyll_plugins 
gem 'json', '~> 1.8.0' 

środowiskowej $ gem

$ gem environment 
RubyGems Environment: 
    - RUBYGEMS VERSION: 2.6.10 
    - RUBY VERSION: 2.4.0 (2016-12-24 patchlevel 0) [x86_64-cygwin] 
    - INSTALLATION DIRECTORY: /cygdrive/c/Users/mochapenguin/.rvm/gems/ruby-2.4.0 
    - USER INSTALLATION DIRECTORY: /cygdrive/c/Users/mochapenguin/.gem/ruby/2.4.0 
    - RUBY EXECUTABLE: /cygdrive/c/Users/mochapenguin/.rvm/rubies/ruby-2.4.0/bin/ruby.exe 
    - EXECUTABLE DIRECTORY: /cygdrive/c/Users/mochapenguin/.rvm/gems/ruby-2.4.0/bin 
    - SPEC CACHE DIRECTORY: /cygdrive/c/Users/mochapenguin/.gem/specs 
    - SYSTEM CONFIGURATION DIRECTORY: /cygdrive/c/Users/mochapenguin/.rvm/rubies/ruby-2.4.0/etc 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-cygwin 
    - GEM PATHS: 
    - /cygdrive/c/Users/mochapenguin/.rvm/gems/ruby-2.4.0 
    - /cygdrive/c/Users/mochapenguin/.rvm/gems/[email protected] 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - https://rubygems.org/ 
    - SHELL PATH: 
    - /cygdrive/c/Users/mochapenguin/.rvm/gems/ruby-2.4.0/bin 
    - /cygdrive/c/Users/mochapenguin/.rvm/gems/[email protected]/bin 
    - /cygdrive/c/Users/mochapenguin/.rvm/rubies/ruby-2.4.0/bin 
    - /usr/local/bin 
    - /usr/bin 
    - /cygdrive/c/Windows/system32 
    - /cygdrive/c/Windows 
    - /cygdrive/c/Windows/System32/Wbem 
    - /cygdrive/c/Windows/System32/WindowsPowerShell/v1.0 
    - /cygdrive/c/Program Files/Java/jdk1.8.0_121/bin 
    ..... snip ..... 
    - /cygdrive/c/Users/mochapenguin/AppData/Local/atom/bin 
    - /usr/lib/lapack 
    - /cygdrive/c/Users/mochapenguin/.rvm/bin 

aktualizacji wiązka

$ bundle update 
Fetching gem metadata from https://rubygems.org/........... 
Fetching version metadata from https://rubygems.org/.. 
Fetching dependency metadata from https://rubygems.org/. 
Resolving dependencies... 
Using i18n 0.8.1 
Using json 1.8.6 
Using minitest 5.10.1 
Using thread_safe 0.3.6 
Using public_suffix 2.0.5 
Using coffee-script-source 1.12.2 
Using execjs 2.7.0 
Using colorator 1.1.0 
Using ffi 1.9.18 
Using multipart-post 2.0.0 
Using forwardable-extended 2.6.0 
Using gemoji 3.0.0 
Using net-dns 0.8.0 
Using sass 3.4.23 
Using rb-fsevent 0.9.8 
Using kramdown 1.13.2 
Using liquid 3.0.6 
Using mercenary 0.3.6 
Using rouge 1.11.1 
Using safe_yaml 1.0.4 
Using mini_portile2 2.1.0 
Using jekyll-paginate 1.1.0 
Using jekyll-swiss 0.4.0 
Using minima 2.0.0 
Using unicode-display_width 1.1.3 
Using bundler 1.14.6 
Using tzinfo 1.2.3 
Using addressable 2.5.0 
Using coffee-script 2.4.1 
Using ethon 0.10.1 
Using rb-inotify 0.9.8 
Using faraday 0.11.0 
Using pathutil 0.14.0 
Using jekyll-sass-converter 1.5.0 
Using nokogiri 1.7.1 
Using terminal-table 1.7.3 
Using activesupport 4.2.7 
Using jekyll-coffeescript 1.0.1 
Using typhoeus 0.8.0 
Using listen 3.0.6 
Using sawyer 0.8.1 
Using html-pipeline 2.5.0 
Using jekyll-watch 1.5.0 
Using octokit 4.6.2 
Using jekyll 3.4.3 
Using github-pages-health-check 1.3.3 
Using jekyll-gist 1.4.0 
Using jekyll-avatar 0.4.2 
Using jekyll-default-layout 0.1.4 
Using jekyll-feed 0.9.2 
Using jekyll-github-metadata 2.3.1 
Using jekyll-mentions 1.2.0 
Using jekyll-optional-front-matter 0.1.2 
Using jekyll-readme-index 0.1.0 
Using jekyll-redirect-from 0.12.1 
Using jekyll-relative-links 0.4.0 
Using jekyll-seo-tag 2.1.0 
Using jekyll-sitemap 1.0.0 
Using jekyll-theme-architect 0.0.3 
Using jekyll-theme-cayman 0.0.3 
Using jekyll-theme-dinky 0.0.3 
Using jekyll-theme-hacker 0.0.3 
Using jekyll-theme-leap-day 0.0.3 
Using jekyll-theme-merlot 0.0.3 
Using jekyll-theme-midnight 0.0.3 
Using jekyll-theme-minimal 0.0.3 
Using jekyll-theme-modernist 0.0.3 
Using jekyll-theme-primer 0.1.7 
Using jekyll-theme-slate 0.0.3 
Using jekyll-theme-tactile 0.0.3 
Using jekyll-theme-time-machine 0.0.3 
Using jekyll-titles-from-headings 0.1.5 
Using jemoji 0.8.0 
Using github-pages 132 
Bundle updated! 

bundle exec - Pełny komunikat o błędzie

$ bundle exec jekyll serve 
/cygdrive/c/Users/mochapenguin/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:40:in `block in setup': You have already activated json 2.0.2, but your Gemfile requires json 1.8.6. Prepending `bundle exec` to your command may solve this. (Gem::LoadError) 
     from /cygdrive/c/Users/mochapenguin/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/forwardable.rb:228:in `each' 
     from /cygdrive/c/Users/mochapenguin/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/forwardable.rb:228:in `each' 
     from /cygdrive/c/Users/mochapenguin/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:25:in `map' 
     from /cygdrive/c/Users/mochapenguin/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:25:in `setup' 
     from /cygdrive/c/Users/mochapenguin/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.6/lib/bundler.rb:100:in `setup' 
     from /cygdrive/c/Users/mochapenguin/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.6/lib/bundler/setup.rb:10:in `<top (required)>' 
     from /cygdrive/c/Users/mochapenguin/.rvm/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
     from /cygdrive/c/Users/mochapenguin/.rvm/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' 

json perełki

$ gem list json 

*** LOCAL GEMS *** 
json (default: 2.0.2, 1.8.6) 

wiązka pokaz json

$ bundle show json 
/cygdrive/c/Users/mochapenguin/.rvm/gems/ruby-2.4.0/gems/json-1.8.6 

Nie można odinstalować defaul t gem

$ gem uninstall json -v2.0.2 
ERROR: While executing gem ... (Gem::InstallError) 
    gem "json" cannot be uninstalled because it is a default gem 

AKTUALIZACJA - 12-Apr-2017

Nie wiem, co problem jest nadal, ale przycięte dół Gemfile do tego i to nie wchodzi w kupie . Może to jakoś działa, gdy te konkretne zależności wersji nie są egzekwowane.

source 'https://rubygems.org' 

# sample suggested [here](https://jekyllrb.com/docs/github-pages/) and in github help 
gem 'github-pages', group: :jekyll_plugins 

AKTUALIZACJA - 21-Apr-2017

Ten problem z Bundler i systemowych klejnotów jest podświetlona at Gem Versioning and Bundler - Doing it right

piaskownicy Bundler opiera się na jej zdolności do być obecny na bardzo początek procesu Ruby, a zatem możliwość zapewnienia, że ​​wersje wszystkich wczytanych bibliotek będą odzwierciedlały te wymienione w pliku Gemfile.lock. Przez uruchomienie pliku wykonywalnego systemu, wykonujesz kod Ruby zanim Bundler może zmodyfikować ścieżkę ładowania i zastąpić normalny mechanizm ładujący Rubygems, pozwalając na załadowanie do pamięci dowolnych niezarządzanych klejnotów. Kiedy to się stanie, wszystkie zakłady są wyłączone.

To właśnie zdarza się w tej sytuacji.

Ale, jak wspomniano powyżej - nie można odinstalować systemu json 2.0.2 gem.

+0

Czy znalazłeś jakieś rozwiązanie tego? – meeDamian

+0

Przepraszam, kolego. Moja aktualizacja z 12 kwietnia jest najlepsza, jaką otrzymałem. Nie patrzyłem dalej, ponieważ potrzebuję go tylko do wykonania polecenia jekyll. Wierzę, że możesz również zdefiniować zestawy klejnotów. To może być najlepsza opcja w obecnych okolicznościach. HTH. – JetStream

Odpowiedz

-4

Wczoraj miałem ten sam problem. Nie jestem ekspertem, ale następujące pracował dla mnie:

stworzyłem nową stronę internetową z użyciem Jekyll:

$ jekyll new "name_site" 

I potem kopiowane nowe GemFile i GemFile.lock z nowego folderu do starszej (gdzie masz problem). Następnie uruchom:

$ jekyll serve 

w folderze bieżącej witryny internetowej i powinno działać. Daj mi znać, czy to działa dla Ciebie!

+0

Uważam, że klejnoty muszą być wykonywane za pomocą 'bundle exec', aby klejnot pętającego się zaczął. Działa jak wrapper wokół wykonywanego głównego klejnotu (tj. W tym przypadku jekyll) i stosuje zależności zdefiniowane w Gemfile. – JetStream

1

Trochę za późno, ale mam rozwiązanie! tak to zrobiłem: więc oprócz patrzenia w standardowe miejsce, w którym zainstalowane są klejnoty, jest jeszcze jedno miejsce, w którym klejnoty mogą być najwyraźniej "zdefiniowane" i wprowadzone do systemu. Zainstalować rzeczy używając rbenv (polecam to na RVM), a te są katalogi dla mnie:

/home/jf/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems 
/home/jf/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/specifications/default 

W przypadku, o dokładnym miejscu/może s być różne, ale powinieneś być w stanie zrozumieć to . Jeśli klejnot znajduje się w standardowym miejscu (/home/jf/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems), bez problemu można go odinstalować. W przypadku innej lokalizacji, choć ... trudne. Aby po prostu uniemożliwić rozpoznanie wersji systemu, aby można było użyć wersji z Gemfile, po prostu przenieś plik json-X.gemspec z tego drugiego katalogu (/home/jf/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/specifications/default powyżej) gdzie indziej. I to wszystko!

+0

Wow, co za szalona poprawka ... dzięki! Używam 'ruby-install' z' chruby' i dla mnie plik do przeniesienia/usunięcia był w '~/.rubies/ruby-2.5.0/lib/ruby ​​/ gems/2.5.0/specifications/default/json- 2.1-0.gemspec'. To pozwoliło mojemu pakietowi ponownie użyć json-1.8.6 –