Итак, я пришел из Java-среды, где вы можете создать класс как таковой.
TestClass x = new TextClass();
и вызвать его метод как
x.shout ();
Я пытаюсь сделать что-то подобное в ruby без такого взгляда. Это может быть синтаксическим, или я плохо понимаю концепцию рубина и рельсов.
Итак, вот класс на сервере в Ruby
class myResource< ActiveResource::Base
self.site = "http://localhost:3008"
def self.shout
puts "I AM AN ACTIVE RESOURCE SHOUT!"
puts " CAPS RAGE YEAH!"
puts Time.now
end
end
Это сидит на стороне клиента.
Здесь тот же класс, что и у активной записи на сервере:
class myRecord < ActiveRecord::Base
def self.shout
puts "I AM AN ACTIVE RECORD SHOUT!"
puts " CAPS RAGE YEAH!"
puts Time.now
end
end
Итак, вот результат того, что я пытался.
На сервере в консоли rails:
?> myRecord.shout
I AM AN ACTIVE RECORD SHOUT!
CAPS RAGE YEAH!
Wed Jul 13 10:17:33 +0100 2011
=> nil
>>
На стороне клиента, однако,
myResource.shout
NoMethodError: undefined method `shout' for myResource:Class
from (irb):206
>>
На мой взгляд, это не имеет смысла, поскольку они почти идентичны и должны называться таковыми.
Если я создаю экземпляр любого из них как
@test = myResource or myRecord.new(blah blah blah)
когда я пишу @ test.shout
Я получаю тот же неопределенный метод.
Моя идея о том, что представляет собой объект в Ruby, была взорвана. Есть кто-нибудь какой-нибудь совет о том, что я делаю здесь неправильно.