如何在非Rails Ruby项目中包含特定的Rails方法(或文件)?

时间:2012-09-07 02:11:11

标签: ruby-on-rails ruby

我想在非Rails Ruby项目的date_helper.rb Rails文件中使用distance_of_time_in_words方法(参见Github)。

如何加入?它需要其他文件,那么如何包含它们呢?

我不想包含所有Rails,因为这会减慢开发过程。

Ruby 1.9.3

2 个答案:

答案 0 :(得分:2)

方法'distance_of_time_in_words'位于actionpack / lib / action_view / helpers / 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( ...... )    

答案 1 :(得分:2)

如果这是你唯一想要的东西,那么我就去拿source code并破解它来删除依赖项(看起来只是一些I18n翻译。为了支持黑客,你可以翻译this测试套件。

为什么我会这样做而不是使用gem?因为它只是如此巨大的依赖性。它是如此巨大,你实际上注意到它加载所有代码。我宁愿撕掉这个方法并破解它的工作,而不是依赖于所有这些(再次,假设这是你想从lib中唯一的东西)。