환경 변수 파일을 읽을 수있는 방법이 있습니까? 배쉬에서Ruby에서 파일에서 변수 읽기
내가 사용할 수있는 파일 env.sh이
env.sh
foo="bar"
bash는 파일
set -a
source env.sh
이 날 것처럼 foo에 사용할 수 있도록 할 나는 루비 스크립트에서 그것을 delcared했다.
또한이 파일에 암호를 저장할 수 있도록이 파일을 읽을 수 없는지 확인하는 방법이 있습니까?
환경 변수 파일을 읽을 수있는 방법이 있습니까? 배쉬에서Ruby에서 파일에서 변수 읽기
내가 사용할 수있는 파일 env.sh이
env.sh
foo="bar"
bash는 파일
set -a
source env.sh
이 날 것처럼 foo에 사용할 수 있도록 할 나는 루비 스크립트에서 그것을 delcared했다.
또한이 파일에 암호를 저장할 수 있도록이 파일을 읽을 수 없는지 확인하는 방법이 있습니까?
는 동안 소리 어쩌면 저장소에있는 민감한 정보로 파일을 보관하지 않아도됩니다. 참고 : 파일 보안은 파일이있는 위치와 운영 체제 및 서버 소프트웨어에 의해 해결됩니다.
이 경우, 구성중인 프로그램의 관리자/사용자에게 필요한 종류의 템플리트가 들어있는 파일을 제공 할 수 있습니다.
루비는 Hash
처럼 작동하며 사용중인 쉘 환경을 보유하는 상수가 ENV
입니다.
예를 들어 공개적으로 누구와도 공유되는 environment.rb.sample이라는 파일이 있습니다. 그것은 지침을 가지고 있으며 사용자가 파일을 environment.rb
에 복사하는 지침과 함께 자유롭게 수정할 수있는 템플릿을 보유합니다. 아마도,
# environment.rb.sample
# Copy this file to environment.rb and change the name and password to your credentials
ENV['temp_user_name'] = 'Foo Bar'
ENV['temp_password'] = 'Dazz Kezz
파일은 다음이 복사됩니다 : 샘플 파일은 다음과 같습니다
# environment.rb
ENV['temp_user_name'] = 'Joe Admin'
ENV['temp_password'] = 'Super Secure Password'
이로드하고 자유롭게에 의해 수정되는 단지 루비 파일입니다 사용하는 파일 소프트웨어의 사용자/관리자이며이 모양이며 공개적으로 공유됩니다.
# load_environment
require './environment'
puts ENV['temp_user_name']
puts ENV['temp_password']
이 파일을로드하고 세계적으로 응용 프로그램에 대한 일정한 범위 인 ENV
을 사용합니다.
파일 사용 권한은 시스템의 사용자/관리자가 관리하며 시스템의 다른 중요한 정보처럼 보호됩니다. 민감한 파일은 저장소의 무시 메커니즘에도 나열되어야합니다. 결코 공개해서는 안됩니다.
네, 거기, 당신이 그것을 사용해야합니다 일부 희한, 비밀의 이유, 그것은 평가의 경우 :
eval(File.read("name_of_var_file"), binding)
을하지 않는 한이를 사용하지 마십시오
정말로 수행하려는 것이 YAML을 사용하여 구성 파일을 작성하는 경우. 이 같은 파일을
config.yaml :
foo: "bar"
이 같은 액세스 할 수는 :
require 'yaml'
conf = YAML.loads(File.read("config.yaml"))
conf['foo'] #=> 'bar'
이 안전하고 관리 할 표준 관행을 언급 할 필요가 없을 것입니다. 파일을 액세스하기위한로서
, 즉, 환경에 대한 정보없이 해소 할 수없는 운영 시스템 레벨 문제 OS 설치 등 로컬 변수의 목적은
인 메소드 정의 또는 블록 내에서 일시적으로 사용됩니다. 그러한 환경 밖에서, 특히 파일을 통해 사용하면 파일의 목적을 상실합니다. 당신은 그것을 할 필요가 없으며, Ruby는 그것을 할 수있는 간단한 방법이 없다.
변수를 올바르게 사용하고 파일간에 변수를 공유하려면 인스턴스, 클래스 또는 전역 변수와 같은 다른 유형의 변수 여야합니다. 또는 환경을 설정하려면 상수를 사용해야합니다. 이 중 전역 변수 및 상수는 파일에 쓰여지고 다른 파일에로드되어 사용될 수 있습니다.
는 파일 a.rb
$foo = 1
FOO = 2
인스턴스 클래스 변수로서 파일 b.rb
load "file-a.rb"
$foo # => 1
FOO # => 2
, 그들이 클래스 또는 인스턴스에 속해 있으므로 같아야 그러한 환경에서 정의됩니다. 그리고 다른 파일에서 동일한 클래스를 다시 열어 다른 파일에로드 할 수 있습니다.
file-a.당신은 사용자/관리자가 자신의 개인 환경에 맞게 수정하는 파일의 예를 제공하고, 그에서 환경을 채워야처럼 RB
class Bar
@@foo = 1
def initialize; @foo = 2 end
end
파일 b.rb은
load "file-a.rb"
Bar.class_variable_get("@@foo") # => 1
Bar.new.instance_variable_get("@foo") # => 2
그건 의미가 있습니다, 나는 암호 등을 내 프로그램에서 지우려고했기 때문에 그 방법으로로드하려고했습니다. 이것은 스크립트 일 뿐이며 클래스를 만들 계획이 아닙니다. –
이름/값 쌍 파일을 구문 분석하는 것은 쉽습니다. 너 뭐 해봤 니? 그리고 누구에게 파일을 읽을 수 없게하고 싶습니까? –
@theTinMan 필자는 파일에 대해 아직 아무 것도 시도하지 않았지만 빠른 Google 검색을 수행했으며 찾고 있던 내용과 정확히 일치하는 것이 아무것도 없었기 때문에 그 이유는 내가 왜 그 파일의 소유자가 아닌 사람에게도 읽을 수 있고 읽을 수 없는지 묻는 이유입니다. 파일 –