나는 AWS S3 gem을 사용하는 클래스가 있으며,이 클래스를 사용하는 클래스에는 여러 가지 메소드가 있습니다. 내 문제는 여러 위치에서 구성하는 것이 아니라 내 개체의 속성으로 만들고 싶습니다.객체 속성이있는 Ruby 객체
PHP에서는 이렇게합니다.
<?php
class myClass {
private $obj;
public function __construct() {
$this->obj = new Object();
}
}
?>
그리고 나서 myClass의 $ this-> obj-> method()를 사용할 수 있습니다.
나는 루비에서 비슷한 결과를 얻지 못하고있다.
내 시나리오는 이와 유사합니다. 나는 또한 실행되지 초기화 내 수업에 나타났습니다
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
이 - 간단한 '은 "여기"두고'아무것도하지 않는다. 이것이 레이크 작업이고 다른 방법으로 여기에 넣을 수 있다고 생각하십시오. 레이크가 ProfileVideo.new를 실행하는 것처럼 초기화되지 않는다면 나는 확신하지 못합니다.
어쨌든, 미리 감사드립니다.
안녕하세요, Seth 님, 고마워요.하지만 빠른 질문 - 객체 (보석)를 만드는 것 - 런타임 중에 내 객체 (myClass) 전체에 지속성이 있습니까? 즉, 다시 만들 필요없이 myClass에서 S3 보석의 메서드를 실행할 수 있습니까? (config는 config 디렉토리에있는 .yml에 있는데, 이것은 git에 의해 무시됩니다.) 다시 한번 감사드립니다. – Christian
@Christian - 보석 페이지의 예제를 다시 보면 ActiveRecord 연결과 마찬가지로 연결이 열렸으며 요청이 완료 될 때까지 (즉 페이지가 사용자에게 반환 될 때까지) 연결이 유지되어야합니다. S3 계정이 없으므로 직접 테스트 할 수 없습니다. –