如何确保保留字不会与 Ruby、Rails 4 或 gem 列表中的 gem 冲突
How can I ensure a reserved word will not conflict with Ruby, Rails 4, or a gem in my gemlist
我有一个 Rails4 应用程序,我想在其中添加一个名为 'Parameters' 的模型,就模型用途而言,这是一个不错的选择,但我担心它也是一个常见的编程任期。
什么是最佳实践(各个步骤)以确保:
Parameters
parameter.thing
... 不会与 Ruby、Rails 或我的特定 Gem 列表中的保留字冲突吗?
像 RubyMine 这样的 IDE 应该在您使用保留字时通过给文本着色来警告您,但是对于像我这样使用美化文本编辑器的人,您可以随时查看 Rails related reserved words 的列表当你不确定时。
Ruby有一个开放classes的概念。也就是说,当 class MyClass
在某处定义时,在您的代码中包含以下内容是完全有效的:
class MyClass
def another_method
# do something useful
end
end
也就是说,此操作没有“类似反射”的机制,因为这是 Ruby 的工作方式。
有人可能会像这样构建复杂的逻辑:
- 运行 应用程序没有新
Parameters
class 已加载;
- 呼叫
$defined = const_get('Parameters') || true rescue false
;
- 使用
$defined
global(这里为了举例而设为global)判断名称是否免费。
或:
- 在
Parameters
上使用 TracePoint#new(:class)
来检测是否只加载了您的。
或
- 使用
ObjectSpace#each
检测其他 classes。
甚至
- 解析来源。
但我不会采用上述任何解决方案。只需将您的 class 称为 MyAppParameters
并使用这个名字即可。
我有一个 Rails4 应用程序,我想在其中添加一个名为 'Parameters' 的模型,就模型用途而言,这是一个不错的选择,但我担心它也是一个常见的编程任期。
什么是最佳实践(各个步骤)以确保:
Parameters
parameter.thing
... 不会与 Ruby、Rails 或我的特定 Gem 列表中的保留字冲突吗?
像 RubyMine 这样的 IDE 应该在您使用保留字时通过给文本着色来警告您,但是对于像我这样使用美化文本编辑器的人,您可以随时查看 Rails related reserved words 的列表当你不确定时。
Ruby有一个开放classes的概念。也就是说,当 class MyClass
在某处定义时,在您的代码中包含以下内容是完全有效的:
class MyClass
def another_method
# do something useful
end
end
也就是说,此操作没有“类似反射”的机制,因为这是 Ruby 的工作方式。
有人可能会像这样构建复杂的逻辑:
- 运行 应用程序没有新
Parameters
class 已加载; - 呼叫
$defined = const_get('Parameters') || true rescue false
; - 使用
$defined
global(这里为了举例而设为global)判断名称是否免费。
或:
- 在
Parameters
上使用TracePoint#new(:class)
来检测是否只加载了您的。
或
- 使用
ObjectSpace#each
检测其他 classes。
甚至
- 解析来源。
但我不会采用上述任何解决方案。只需将您的 class 称为 MyAppParameters
并使用这个名字即可。