RubyInlineの続き

あぁ、RubyInlineでメソッド定義した後に
module_functionでメソッド指定してあげればモジュールメソッドを定義できました。

require 'inline'

module World
  inline do |builder|
    builder.c <<-CODE
      VALUE
      hello(){
        return rb_str_new2("Hello,World!");
      }
    CODE
  end
  module_function :hello
end

puts World.hello  # => Hello,World!


えぇと、RubyInlineでメソッドを生やした後に
privateメソッドで"メソッドを指定してやれば"変更できたし。

require 'inline'

class World
  def hello2
    hello
  end 
  inline do |builder|
    builder.c <<-CODE
      VALUE
      hello(){
        return rb_str_new2("Hello,World!");
      }
    CODE
  end 
  private :hello
end

puts World.new.hello2 # => "Hello,World!"
puts World.new.hello  # => (NoMethodError)