私はRESTfulAPIのgemに取り組んでいますが、これはREST APIであるため、多くのリソースURLが同じであり、各クラスのいくつかのメソッドがまったく同じになることに気付きました(uriだけパスが異なります)。
私は次のようなクラスの作成を開始しました。
module NameSpace
Class1 < SuperClass; ... end
end
さまざまなファイルで、同様になります:
moduel NameSpace
Class2 < SuperClass; ... end
end
だから、これが私がこれまでに開発したものです:
RESOURCE_NAMES = [
"Class1",
"Class2",
...
]
module NameSpace
RESOURCE_NAMES.each {|class_name|
Object.const_set(
class_name,
Class.new(SuperClass) do
CONTROLLER = class_name.downcase
@attributes = {}
# class variables
def self.show(id); ... end
def self.update(id); ... end
def self.destroy(id); ... end
end
)
}
end
しかし、コンソールを実行しようとしてgemが必要になると、次の出力が得られます。
require "rubygems"
require "mygem"
/home/me/.rvm/gems/ruby-1.8.7-p371/gems/mygem-0.0.1/lib/mygem/restful_resource.rb:17: warning: already initialized constant CONTROLLER
/home/me/.rvm/gems/ruby-1.8.7-p371/gems/mygem-0.0.1/lib/mygem/restful_resource.rb:17: warning: already initialized constant CONTROLLER
/home/me/.rvm/gems/ruby-1.8.7-p371/gems/mygem-0.0.1/lib/mygem/restful_resource.rb:17: warning: already initialized constant CONTROLLER
/home/me/.rvm/gems/ruby-1.8.7-p371/gems/mygem-0.0.1/lib/mygem/restful_resource.rb:17: warning: already initialized constant CONTROLLER
/home/me/.rvm/gems/ruby-1.8.7-p371/gems/mygem-0.0.1/lib/mygem/restful_resource.rb:17: warning: already initialized constant CONTROLLER
そして私がやろうとすると
> NameSpace::Cass1
、私は
NameError: uninitialized constant NameSpace::Class1
私の質問は:私は近くにいますか?動的なサブクラス化および名前空間化されたクラスを適切に定義するにはどうすればよいですか?