On 2 Dec 2008, at 10:13, hei wrote:

>
> Thanks!
> class Translater
>  require "rubygems"
>  require "rmmseg"
>  include RMMSeg
>
>  RMMSeg::Config.max_word_length = 7
>  RMMSeg::Config.algorithm = :complex
>  RMMSeg::Config.dictionaries = [["dict/chars.dic", true],
>                                 ["dict/words.dic", false],
>                                 ["dict/desc.dic", false],
>                                 ["dict/identity.dic", false],
>                                 ["dict/name.dic", false],
>                                 ]
>
>  Word = {}
>  File.open(File.join(File.dirname(__FILE__), "dict",
> "word_china_english.trans")).each do |line|
>    arr = line.split(" ")
>    arr[1] = arr[0] unless arr[1]
>    Word[arr[0]] = Word[arr[1]]
>  end
>  def self.segment(phrase)
>    p RMMSeg::Config.max_word_length
>    RMMSeg::segment(phrase)
>  end
>
>  def self.run(phrase)
>    words = segment(phrase)
>    translation = ""
>    words.each do |word|
>       translation += Word[word].to_s + " "
>    end
>    translation
>  end
>
> end
>
> The actual problem is : why can not i use methods of some libray
> (rmmseg in this exam) in rails.
> I can use it in simple ruby program.

You must be doing something slightly different in your standalone ruby  
script. The segment method from the RMMSeg module can't be called on  
RMMSeg itself. You need to include the module in something

if you were to remove the segment method you've defined and replace it  
with
extend RMMSeg
then it would probably work.
or equivalently

class Translater
   ...
   class << self
     include RMSSeg
     def run(phrase)
       ....
     end
   end
end

Fred

>
> In rails, I encapsulate that method(segment) by a ruby class
> (Translater), and put the source in folder lib/
> when using it in helper functions, problem occurs like this:
> undefined method `segment' for RMMSeg:Module
>
> Thanks for your help again!
>
>
>
> On 12月2日, 下午5时51分, Frederick Cheung  
> <[EMAIL PROTECTED]>
> wrote:
>> On Dec 2, 5:59 am, hei <[EMAIL PROTECTED]> wrote:
>>
>>> Can anyone help me ~~
>>
>> What's the run method in translater? ALso it looks like this isn't  
>> the
>> exact code that is running - for example include "RMMSeg" is almost
>> certainly include RMMSeg; it's very hard to say anything about code
>> when it has been changed in small ways in between what you're running
>> and this mailing list - those changes could be key or could be hiding
>> the real problem.
>>
>> Fred
>>
>>> On 12月2日, 下午12时04分, hei <[EMAIL PROTECTED]> wrote:
>>
>>>> I do things below:
>>
>>>> In lib/translater.rb
>>>> class Translater
>>>> require "rubygems"
>>>> require "rmmseg"
>>>> include "RMMSeg"
>>>> ...
>>>> def segment(text)
>>>>   RMMSeg::segment(text)
>>>> end
>>>> end
>>
>>>> in helper/xx/xxx.rb
>>>> module xx
>>>>  require "translater.rb"
>>>>  def translate(text)
>>>>    Translater.run(text)
>>>>  end
>>>> end
>>
>>>> when i use helper method tranlate,  erros:
>>>> undefined method `segment' for RMMSeg:Module
>>>> But when I test these in a simple ruby program it works well
>>>> Can anyone help me ?
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to