복붙노트

[RUBY-ON-RAILS] 카피 스트라 노 및 환경 변수

RUBY-ON-RAILS

카피 스트라 노 및 환경 변수

나는 구성을위한 환경 변수를 사용하여 전환했습니다 그리고 그것은 매우 잘 작동 - 내가 배포하거나 카피 스트라 노에 작업을 실행해야 할 때를 제외하고.

카피 스트라 노 3 각 명령 앞에 둔과는 / usr / 빈 / I가의 .bashrc를 통해 설정 한 모든 환경 변수를 지 웁니다 ENV를 실행하는 것 같다.

편집 - 카피 스트라 노의 비 로그인, 비 대화 형 쉘 등이 실행하고 .bash_profile을 .bashrc에로드하거나하지 않기 때문에 좀 더 reasearch 일을,이 힘은 문제가되지,이 문제가 될 수 있습니다. 그럼에도 불구하고 있지만, 붙어.

확인 환경 바르가 카피 스트라 노이 작업을 실행할 때 설정 만드는 가장 좋은 방법이 있을까요?

해결법

  1. ==============================

    1.당신은 환경 변수와 쉘 변수의 차이에서 찾고 최선 수 있습니다

    당신은 환경 변수와 쉘 변수의 차이에서 찾고 최선 수 있습니다

    당신은 SSH를 발사 할 때 앱은 당신의 .bashrc 파일에 정의 된 SHELL 변수를로드합니다. 이 단지 쉘의 삶을 위해 존재하고, ENV는 바르 따라서, 우리는 많이 사용하지 않는

    당신은 더 나은 ENV가에 바르 퍼팅 할 수있다 :

    /etc/environment
    

    이 같이 :

    export ENVIRONMENT_VAR=value
    

    이것은 시스템 전반에 걸쳐뿐만 아니라 다른 쉘 세션에서 변수를 사용할 수 있도록합니다

    최신 정보

    당신은 시도 해 봤나

    카피 스트라 노는 : 수 있습니까 전체 캡 세션에 대한 환경 변수를 설정?

    set :default_env, { 
      'env_var1' => 'value1',
      'env_var2' => 'value2'
    }
    
  2. ==============================

    2.이가 대답되었지만, 나는 경우 다른 사람에 여기를 떠나려고하는 것은 내가 있던 같은 상황에 있습니다.

    이가 대답되었지만, 나는 경우 다른 사람에 여기를 떠나려고하는 것은 내가 있던 같은 상황에 있습니다.

    카피 스트라 노 부하의 .bashrc 않습니다. 이 파일의 상단에 알 수 있습니다하지만이있다 :

    # If not running interactively, don't do anything
    [ -z "$PS1" ] && return
    

    이 솔루션은이 위의 모든 설정을 넣어 단순히이었다 카피 스트라 노 내가 방법을 작동합니다.

    이 솔루션은 또한이 GitHub의 문제에 주목했다.

  3. ==============================

    3.문제 업데이트를 디버깅하기 위해 설정 / deploy.rb 간단한 작업과 함께 :

    문제 업데이트를 디버깅하기 위해 설정 / deploy.rb 간단한 작업과 함께 :

    namespace :debug do
      desc 'Print ENV variables'
      task :env do
        on roles(:app), in: :sequence, wait: 5 do
          execute :printenv
        end
      end
    end
    

    지금 캡 준비 디버그를 실행 ENV를. 당신은 ENV 변수의 효과적인 구성을 볼 수 있어야합니다.

    순서와 파일의 이름은, 예를 들어, 배포에 따라 달라집니다 우분투에서 소싱 순서는 다음과 같습니다

    ~ / .bashrc에이 같은 첫 선을 포함하는 경우, 코드는 이후에 공급되지 않습니다 :

    # If not running interactively, don't do anything
    case $- in
        *i*) ;;
          *) return;;
    esac
    

    카피 스트라 노로드 변수를 ENV 방법을 이해하기 위해이 차트 (소스) 도움이 될 수 있습니다.

    대부분의 가능성이 ~ / .bash * 파일 인해 비 대화 형 세션에로드되지 않습니다.

  4. ==============================

    4.당신은 시스템 내의 모든 사용자와 프로세스가 사용할 수 있도록 / etc / environment 파일에 설정된 환경 변수에 필요합니다. 환경의 .bashrc에 변수 나 .bash_profile에 파일이 자동으로 양산 공정 및 서비스에 대한 유일한 쉘 세션 내에서 사용할 수 있으며 수 없습니다.

    당신은 시스템 내의 모든 사용자와 프로세스가 사용할 수 있도록 / etc / environment 파일에 설정된 환경 변수에 필요합니다. 환경의 .bashrc에 변수 나 .bash_profile에 파일이 자동으로 양산 공정 및 서비스에 대한 유일한 쉘 세션 내에서 사용할 수 있으며 수 없습니다.

    내가 관리하고 / etc / environment 파일을 수정하여 정확하게 작동하는 클러스터에서 환경 변수를 동기화 할 시간 전에 카피 스트라 노 라이브러리 (카피 스트라 노 - env_config)을했다. 그것은 사용하기 쉽게하고 Heroku가 툴 벨트와 환경 변수를 설정하는 방법과 비슷합니다. 여기 몇 가지 예가 있어요.

    cap env:list
    cap env:get[VARIABLE_NAME, VARIABLE_NAME, ...] 
    cap env:unset[VARIABLE_NAME, VARIABLE_NAME, ...] 
    cap env:set[VARIABLE_NAME=VALUE, VARIABLE_NAME=VALUE, ...] 
    cap env:sync
    
  5. ==============================

    5.에 정착 솔루션의 I이었다 :

    에 정착 솔루션의 I이었다 :

    참조 : http://en.wikibooks.org/wiki/OpenSSH/Client_Configuration_Files#.7E.2F.ssh.2Fenvironment

    그것은보다 실제로 더 나쁘다. 나는 푸마 / 레일을 관리 할 수 ​​갑자기 출세를 사용하고 ENV뿐만 아니라이 설정 바르해야합니다. 그래서, 실험 일 후, 나는 다음과 같은 완전한하지만 끔찍한 솔루션에 결국 :

    그것은 (... 수출하지 않고, 수출) 여러 파일 / 템플릿에 여러 형식으로 바르 ENV의 동일한 목록을 유지하는 엉덩이에 통증이있다. 다행히 그것은 카피 스트라 노가에 배포하는 데 사용되기 전에 노드의 구성을 관리하기 위해 인형을 사용하여보다 신뢰성 / 약간 쉽게 만들어졌다 ...

    정말 리눅스 쉘, 초기화 및 dotfiles의 전체 도메인을 싫어. 그것은 완전한 재부팅 시간이다.

  6. from https://stackoverflow.com/questions/23672631/capistrano-and-environment-variables by cc-by-sa and MIT license