Tag: 模块

在Ruby中命名命名空间的首选方式(更好的样式)是什么? 单数还是复数?

什么是使用的利弊: FooLib::Plugins FooLib::Plugins::Bar 与 FooLib::Plugin FooLib::Plugin::Bar 命名惯例? 你会用什么或者你用的是什么? 在社区中更常用的是什么?

Rails不会从lib加载我的模块

我在lib文件夹中的Rails 3.2应用程序中有一堆自定义类:即扩展ActiveRecord等。一切正常。 但是,我正在尝试向FileUtils添加一些自定义方法,即 module FileUtils def last_modified_file(path=’.’) # blah … end end 我把它放在lib / file_utils.rb中我的application.rb我有 config.autoload_paths += %W(#{config.root}/lib) 我的其他自定义分类是加载但不是模块。 我读过( 在Rails 3中从lib文件夹加载模块/类的最佳方法? )我应该在模块内部定义一个类,以便Rails根据FileUtils.class来获取它 – 它应该是Object <BasicObject 。 所以我试过了 module FileUtils class Object def last_modified_file(path=’.’) # blah … end end end 但这也不起作用。 然而,当我启动irb并只是粘贴我的代码,它有效地将我的新代码放入对象并重新包含我的模块 – 它工作正常。 我在这里失踪了?

Ruby:模块,Mixins和Block令人困惑?

以下是我试图从Ruby Programming Book中运行的代码http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html 为什么product方法没有给出正确的输出? 我用irb test.rb运行它。 我正在运行Ruby 1.9.3p194 。 module Inject def inject(n) each do |value| n = yield(n, value) end n end def sum(initial = 0) inject(initial) { |n, value| n + value } end def product(initial = 1) inject(initial) { |n, value| n * value } end end class Array include Inject end […]

如何在ruby中引用子模块的“完整路径”?

在我的应用程序中,我有 VeryUniqueModule::Foo # and… VeryUniqueModule::Bar Foo和Bar各自提供不同的服务。 我的应用程序的一部分必须动态地找出要引用的模块,它可以这样做: def service_api # @relevant_object.service is a string that is either ‘Foo’ or ‘Bar’ VeryUniqueModule.const_get(@relevant_object.service) end 稍后会详细介绍。 我刚刚更新了一个库,它现在有了自己的顶级Foo类(这是一个糟糕的设计)。 现在,当我尝试调用@relevant_object.service_api::A_CONSTANT ,我的应用程序抱怨库的 Foo没有A_CONSTANT 。 回到上面的service_api – 我认为const_get正在返回类本身。 事实上我知道它是。 如果我在irb启动它,一切都如预期的那样 – 返回值是类本身,我可以调用类中的东西。 所以… 首先如何存在名称空间冲突? 我正在寻找A_CONSTANT返回的Class对象上的A_CONSTANT ,而不是我正在eval的字符串或类似的那些时髦的东西 – 应该没有任何名称空间问题,我直接指的是一个对象! 如果这确实是一个问题,我如何修复service_api以便它返回erm“完整路径”?

Rails从Helper模块返回多个content_tags

我写了以下帮助: def section_to_html (block) case block[0].downcase when “paragraph” block.shift block.each do |value| return content_tag(:p, value) end end end 它目前正在解析这些数组。 [“paragraph”, “This is the first paragraph.”] [“paragraph”, “This is the second.”, “And here’s an extra paragraph.”] 它返回: This is the first paragraph. This is the second. 有没有办法累积content_tag? 所以它返回: This is the first paragraph. This is the […]

使模块inheritance自Ruby中的另一个模块

我正在为Rails创建一个小程序,其中包括我在ApplicationHelper模块内部的模块内部构建的一些方法。 这是一个例子: module Helper def time Time.now.year end end module ApplicationHelper # Inherit from Helper here… end 我知道ApplicationHelper < Helper和include Helper可以在类的上下文中工作,但是你会使用什么来进行模块到模块的inheritance? 谢谢。

如何在ruby模块中包含unit testing?

我正在尝试将模块的unit testing包含在与模块本身相同的源文件中,遵循Perl modulino模型。 #! /usr/bin/env ruby require ‘test/unit’ module Modulino def modulino_function return 0 end end class ModulinoTest < Test::Unit::TestCase include Modulino def test_modulino_function assert_equal(0, modulino_function) end end 现在,我可以运行执行此源文件的unit testing。 但是 ,当我需要/从另一个脚本加载它们时,它们也会运行。 如何避免这种情况? 有没有更惯用的方法来实现这一点,除非这种做法不鼓励?

在多个控制器之间共享一个before_filter的位置

我有多个控制器都使用相同的before_filter。 为了保持干燥,这种方法应该放在哪里,以便所有控制器都可以使用它? 一个模块似乎不是正确的地方,虽然我不知道为什么。 我不能把它放在基类中,因为控制器已经有不同的超类。

Ruby(和Rails)嵌套模块语法

我想知道以下两个模块之间的区别 # First Example module Parent module Child end end 和 # Second Example module Parent::Child end 使用第二种方法,似乎必须先定义父模块,否则我会得到一个’未初始化的常量’错误 鉴于此,定义诸如此类的模块然后在语法和文件结构(即文件夹等)方面添加嵌套子元素的首选方法是什么。 非常感谢参考Rails方式。 所有意图和目的的这两个例子是否相同?

模块中的实例变量?

即使我无法创建模块的实例,我怎么可能在模块中有实例变量? 下面的模块Stacklike中@stack的目的是什么? module Stacklike def stack @stack ||= [] end end