【问题标题】:If I want to add a method to String class in Sinatra, where should I put it?如果我想在 Sinatra 的 String 类中添加一个方法,我应该把它放在哪里?
【发布时间】:2020-11-27 16:32:40
【问题描述】:

我想在 Sinatra 中将一个方法扩展到 String 类,在 erb 文件中,执行类似的操作

<%= 'some string'.my_method %> 

但是不知道怎么放定义代码:

String.class_eval do
  def my_mythod
    some_code
  end
end

顺便说一下,我使用的是 sinatra 模块化编码风格

【问题讨论】:

  • 在 Ruby 中你可以重新打开课程;这样做更简单:class String; def my_method; ...; end; end

标签: ruby sinatra


【解决方案1】:

我倾向于将这样的代码粘贴在自己的文件中,在 lib/ext 文件夹下。然后,您可以从您的 Sinatra 应用程序中获取此文件。

lib/ext/string.rb下:

class String
  my_mythod
    some_code
  end
end

然后将以下内容添加到您的 Sinatra 应用程序中,假设您的基类文件位于 lib 文件夹中:

require File.dirname(__FILE__) + '/ext/string' 

我也很想看看人们对此有何看法。

【讨论】:

    【解决方案2】:

    无论我把它放在哪里似乎都可以工作(这是一个很好的观察吗?) 在脚本开始时评估的任何地方

    将它与所有其他字段和方法一起放入应用程序类本身

    也应该在辅助类中工作

    【讨论】:

      猜你喜欢
      • 2010-09-28
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 2011-12-11
      • 1970-01-01
      • 2019-07-11
      相关资源
      最近更新 更多