У меня есть следующий модуль:
# lib/translator/sms_command.rb
module Translator
module SmsCommand
def self.included(klass)
puts "SmsCommand initialized in #{klass}"
end
def alias_command(name)
end
end
end
И следующая спецификация:
# spec/translator/sms_command_spec.rb
require 'spec_helper'
class ExampleCommand
include Translator::SmsCommand
alias_command :x
end
module Translator
describe SmsCommand do
describe "#alias_command" do
it "registers the class with the command registry" do
Translator::SmsCommand.command_registry.should include_key :x
end
end
end
end
Да #alias_command ничего не делает на этом этапе, но это потому, что я в центреразвивая это.Тем не менее, когда я запускаю свою спецификацию, я вижу ...
SmsCommand initialized in ExampleCommand
, поэтому модуль, безусловно, смешивается, однако спецификации в строке alias_command :x
в ExampleCommand
как будто *Метод 1012 * никогда не становится доступным.
/spec/translator/sms_command_spec.rb:5:in `<class:ExampleCommand>': undefined method `alias_command' for ExampleCommand:Class (NoMethodError)
Я мог бы решить эту проблему путем наследования, хотя я бы предпочел модуль mixin.Чего мне не хватает?