我想在非Rails Ruby項目中的date_helper.rb Rails文件中使用distance_of_time_in_words
方法(請參閱Github)。如何在非Rails Ruby項目中包含特定的Rails方法(或文件)?
如何包含它?它需要其他文件,所以如何包含它們?
我不想包含所有的Rails,因爲這會減慢開發過程。
紅寶石1.9.3
我想在非Rails Ruby項目中的date_helper.rb Rails文件中使用distance_of_time_in_words
方法(請參閱Github)。如何在非Rails Ruby項目中包含特定的Rails方法(或文件)?
如何包含它?它需要其他文件,所以如何包含它們?
我不想包含所有的Rails,因爲這會減慢開發過程。
紅寶石1.9.3
的方法 'distance_of_time_in_words' 處於ActionPack的/ LIB/ACTION_VIEW /助手/ date_helper.rb。所以你應該要求'action_view'和'action_view/helpers'來加載這個方法。並且該方法在模塊ActionView :: Helpers :: DateHelper中定義,您可以將它包含在您的類中。該方法是一種實例方法。
require 'action_view'
require 'action_view/helpers'
class Klass
include ActionView::Helpers::DateHelper
end
c = Klass.new
c.distance_of_time_in_words(......)
如果這是你從它想要的東西,那麼我只是去走source code和破解它刪除的依賴(這似乎僅僅是一些翻譯的I18n要支持的黑客,你可能翻譯爲this測試套件
爲什麼我會這樣做而不是使用gem?因爲它是如此巨大的依賴關係,它實在太大了,你真的注意到它加載了所有的代碼,我寧願撕掉方法,並破解它的工作,而不是依賴於所有這些(再次,假設這是你從lib中唯一想要的東西)。
這在這種情況下可能很有意義,因爲如果很容易刪除依賴關係。但總的來說,包含所需文件可能更實用。 –
這非常有幫助。我認爲最好的答案是包含所需的文件,而不包括Rails。但我收集你的答案使用Rails的寶石。 –