Class methods are defined by prepending self.
:
class FBRank
def self.initialize_with(...)
end
end
However, you should return an instance, something like:
def self.initialize_with(access_token, photo_rank_weight=150, link_rank_weight=30, post_rank_weight=140, tagged_rank_weight=70, liked_photo_weight=150)
rank = FBRank.new
rank.access_token = access_token
# ...
rank
end
Or even better use Ruby's initialize
method:
def initialize(access_token, photo_rank_weight=150, link_rank_weight=30, post_rank_weight=140, tagged_rank_weight=70, liked_photo_weight=150)
@access_token = access_token
# ...
end
You can then create a FBRank
instance with:
FBRank.new('CAAJzb7', 150, 30, 140, 70, 150)
It might also be a good idea to use a hash for passing the options:
def initialize(access_token, options={})
@access_token = access_token
@photo_rank_weight = options.fetch(:photo_rank_weight, 150)
@link_rank_weight = options.fetch(:link_rank_weight, 30)
@post_rank_weight = options.fetch(:post_rank_weight, 140)
@tagged_rank_weight = options.fetch(:tagged_rank_weight, 70)
@liked_photo_weight = options.fetch(:liked_photo_weight, 150)
end
and initialize it via:
FBRank.new('CAAJzb7',
photo_rank_weight: 150,
link_rank_weight: 30,
post_rank_weight: 140,
tagged_rank_weight: 70,
liked_photo_weight: 150)