2017-03-29 29 views
0

我做了bundle config --global path vendor/bundle以便Bundler安裝依賴項(包括Jekyll)到項目目錄而不是GEM_HOME。我沒有將Jekyll安裝到GEM_HOME。使用bundle exec jekyll new創建新的默認站點時,Jekyll/Bundler失敗。 --force`

當我初始化項目目錄...

mkdir site && cd site 
bundle init 

更新我的項目的Gemfile的內容...

# frozen_string_literal: true 
source "https://rubygems.org" 

gem "jekyll" 

安裝Jekyll對於項目目錄,並創建了一個新的網站使用默認腳手架...

bundle install 
bundle exec jekyll new . --force 

......我預料傑基爾會寫默認覆蓋我的原Gemfile,然後bundle install默認網站依賴關係從 gemfile(例如,最小值)到vendor/bundle。

相反,這裏是輸出:

Running bundle install in /Users/joeptacek/site... 
    Bundler: /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/resolver.rb:386:in `block in verify_gemfile_dependencies_are_found!': Could not find gem 'minima (~> 2.0)' in any of the gem sources listed in your Gemfile. (Bundler::GemNotFound) 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/resolver.rb:356:in `each' 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/resolver.rb:356:in `verify_gemfile_dependencies_are_found!' 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/resolver.rb:203:in `start' 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/resolver.rb:182:in `resolve' 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/definition.rb:252:in `resolve' 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/definition.rb:176:in `specs' 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/definition.rb:235:in `specs_for' 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/definition.rb:224:in `requested_specs' 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/runtime.rb:118:in `block in definition_method' 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/runtime.rb:19:in `setup' 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler.rb:100:in `setup' 
    Bundler: from /Users/joeptacek/.gem/ruby/2.4.1/gems/bundler-1.14.6/lib/bundler/setup.rb:20:in `<top (required)>' 
    Bundler: from /Users/joeptacek/.rubies/ruby-2.4.1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
    Bundler: from /Users/joeptacek/.rubies/ruby-2.4.1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' 

如果我再次運行bundle install,則依賴關係沒有進一步的問題安裝。

爲了避免出錯,我的解決方法已經做出new本站

bundle exec jekyll new . --force --skip-bundle && bundle install 

這是一個錯誤,或者我誤解一些有關的方式哲基爾和捆紮機工作?

+0

按照你的步驟,我無法重現這一點。但是,爲什麼你會將--force作爲默認行爲?你是否真的處於想要頻繁覆蓋項目的情況? –

+0

@maxple我的項目目錄包含一個Gemfile(即非空),所以我需要使用--force來初始化jekyll – jptacek

+0

我試着用同樣的Gemfile在這裏顯示。它完全覆蓋了Gemfile。 –

回答

0

從我收集的信息來看,您的工作流程與官方文檔的唯一區別在於,您將jekyll寶石及其依賴關係安裝到vendor/bundle

jekyll new與站點腳手架一起創建Gemfile。因此,您無需事先初始化,然後使用--force開關覆蓋它。

要在/projects/site腳手架新傑奇網站,你只需要做到以下幾點:

# from 'projects/' directory 
$ jekyll new site 

現在,您可以編輯Gemfile和包括任何其它寶石的要求。

注意:它不是bundle exec jekyll new --而是普通的'jekyll new
bundle exec前置於每個其他命令只有當目錄中存在一個Gemfile

+0

正確,我正在使用'bundle install'安裝jekyll到vendor/bundle。這是原始Gemfile的用途,爲什麼我需要執行'捆綁exec jekyll new'來創建網站。使用'jekyll new'在$ PATH上找不到jekyll。 – jptacek

+0

哦,我明白了......猜,我誤解了你的問題。如果您面對與「jekyll v3.3.1」相同的問題,您可以向我們報告嗎?謝謝 – ashmaroli

+0

剛剛用jekyll 3.3.1試了一遍,得到了(基本上)同樣的錯誤:「在gemfile中列出的任何gem源文件中找不到gem'minima(〜> 2.0)'。失蹤的寶石。「 (跟以前一樣,跟着另一個'bundle install'做竅門) – jptacek

相關問題