我有一个使用AWS S3 gem的类,并且在我的类中有几个使用 gem 的方法。我的问题是,我不想在多个位置配置它,而是想让它成为我的对象的属性。
在 PHP 中,我们会这样做;
<?php
class myClass {
private $obj;
public function __construct() {
$this->obj = new Object();
}
}
?>
然后我可以在 myClass 的任何地方使用 $this->obj->method()。
我很难像在 ruby 中工作一样。
我的情况与此类似;
require 'aws/s3'
class ProfileVideo < ActiveRecord::Base
def self.cleanup
# <snip> YAML load my config etc etc
AWS::S3::Base.establish_connection!(
:access_key_id => @aws_config['aws_key'],
:secret_access_key => @aws_config['aws_secret']
)
end
def self.another_method
# I want to use AWS::S3 here without needing to establish connection again
end
end
我还注意到,在我的课堂上,初始化无法执行——一个简单的“把“放在这里””什么也没做。考虑到这是一项 rake 任务,我可以将“这里”放在其他方法中。我不确定 rake 是否不像运行 ProfileVideo.new 那样初始化?
无论如何,提前谢谢。