如何使用元编程定义类方法?

How to define class-methods with metaprogramming?

为什么以下不创建类方法?

class Movie
  ['upcoming','now_playing','top_rated'].each do |method|
    define_method(method) do |page=1,api_key='xxxxxx'|
      movies = get("/movie/#{method}",:query=>{page: page,api_key: api_key}).to_hash["results"].map{|m| Movie.new(m["id"])}
    end
  end
end

只需替换 define_method with define_singleton_method.

因为 define_method 创建实例方法,而不是 class 方法。