山口と申します。

yama@roswell:/tmp$ ruby --version
ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-cygwin]
yama@roswelll:/tmp$ uname -a
CYGWIN_NT-6.1 JPC20316739 2.5.2(0.297/5/3) 2016-06-23 14:29 x86_64 
Cygwin

の環境で、define_method を使い方で嵌っております。

class Tako
  @api_name_list= Array['setPowerSettings','getStorageList']

  @api_name_list.each do |apiname|
    define_method(apiname){ puts "#{apiname}" }
  end
end
Tako.new.setPowerSettings # => setPowerSettings

は、期待した動作をするのですが、

下記の様に、
@api_name_list を、initialize methodで設定すると、

class Ika
  def initialize
    @api_name_list = self.getSupportedApiInfo
  end

  @api_name_list.each do |apiname|
    define_method(apiname){ puts "#{apiname}" }
  end

  def getSupportedApiInfo
    Array['setPowerSettings','getStorageList']
  end
end
Ika.new.setPowerSettings # ./tako.rb:15:in `<class:Ika>': undefined 
method `each' for nil:NilClass (NoMethodError) from ./tako.rb:10:in `<
main>'

define_method する前に、そもそも、@api_name_list が nil だという事で、実
行時エラーになってしまいます。
この様な感じで、define_method で method 定義は出来ないのでしょうか?
ご教示お願いします。