嘗試創建基於bundler's official guide on developing a Ruby gem的寶石。Ruby:需要在寶石中工作,從源代碼運行時失敗
運行bundle gem foodie
將在lib
目錄中創建一個結構和生成文件:
- 美食家
- version.rb
- foodie.rb
美食家。 rb讀取
require "foodie/version"
module Foodie
# Your code goes here...
end
運行ruby lib/foodie.rb
(或者也可在不同的目錄)將導致
C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- foodie/versio
n (LoadError)
from C:/Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from foodie.rb:1:in `<main>'
在另一方面通過rake install
安裝寶石,然後要求創業板工作得很好。
它從源頭上運行,如果require "foodie/version"
更改爲require_relative "foodie/version"
在foodie.rb。據我瞭解基於模塊
require_relative
作品基於目錄結構對我來說,後者看起來像一個黑客
require
作品。通過模塊來構建代碼不再有意義,因爲它不會被強制執行(也許它仍然有意義,但是你可以犯錯並永遠不會注意到)。我的問題是:
- 是否有可能測試來自源的寶石,而無需安裝它,而以下所述捆綁約定(使用
require
代替require_relative
)? - 爲什麼安裝後的寶石工作?
- 是否有任何使用
require
,require_relative
,模塊,文件和一般結構的最佳做法?
謝謝。
- 是否有可能測試來自源的寶石,而無需安裝它,而以下所述捆綁約定(使用
請把這個問題分解成單獨的問題,因爲:1.你所問的三個問題是完全不同的,2.他們將以這種方式對未來的讀者更有用。謝謝! –
感謝您的反饋。我是這樣問的,因爲這些問題出自相同的問題/背景 - 我想像其他人在類似的情況下也有類似的問題。我認爲每個問題都需要相同的背景。在幾個問題上重複相同的背景是不是很好的做法? – thisismydesign