10274


Capistrano で .env のアップロードをしたいと思っていますが、うまく動作せず困っています。（アプリは Rails で開発しています。）

アップロードのタスクは下記のように書いています。

[code]

    desc 'Upload .env'
    task :upload_dotenv do
      on roles(:app) do |host|
        upload! '.env', "#{shared_path}/.env"
      end
    end
    
[/code]

上記タスクの実行結果は下記の通りです。

[code]

    $ bin/cap production deploy:upload_dotenv
    DEBUG [755666a9] Running /usr/bin/env [ -d /usr/local/rbenv/versions/2.2.2 ] as username@example.com
    DEBUG [755666a9] Command: [ -d /usr/local/rbenv/versions/2.2.2 ]
    DEBUG [755666a9] Finished in 0.292 seconds with exit status 0 (successful).
    DEBUG Uploading .env 0.0%
    (Backtrace restricted to imported tasks)
    cap aborted!
    SSHKit::Runner::ExecuteError: Exception while executing as username@example.com: scp: ~/path/to/.env: No such file or directory
    
    scp: ~/path/to/.env: No such file or directory
    
    Tasks: TOP => deploy:upload_dotenv
    (See full trace by running task with --trace)
    
[/code]

Capistrano のバージョンは下記の通りです。

[code]

    $ bin/cap -v
    Capistrano Version: 3.4.0 (Rake Version: 10.4.2)
    
[/code]

その他必要な情報などありましたら、コメントいただければ幸いです。


CC BY-SA 3.0
2015-05-12T03:54:58.983
10068
2015-05-17T02:47:02.783
8160
question
capistrano
Capistrano でファイルのアップロードができない


コメント欄の通りですが、パスの指定を絶対パスにすることで解決をしました。

`config/deploy.rb` に `set :deploy_to, '~/path/to'`
と記述していたのですが、これをアプリケーションの絶対パス（例: `set :deploy_to, '/var/www/app_name'`
）に修正することで、 `.env` をアップロードするタスクが想定通り動作するようになりました。

@user3758624 様、素晴らしいヒントをいただきありがとうございました！


CC BY-SA 3.0
2015-05-17T02:47:02.783
10274
2015-05-17T02:47:02.783
8160
10068
answer