Table of Contents [expand]
最終更新日 2017年11月15日(水)
アプリで次のようなコマンドを実行したとします。
$ heroku run bash
~$ rails c
次のようなエラーが表示されることがあります。
Could not find rake-12.0.0 in any of the sources
Run bundle install to install missing gems.
これは指定されたバージョンの gem が dyno にインストールされていないという意味ではなく、通常はパスまたは設定の問題を指摘しています。
正しくない binstubs
Rails の最近のバージョンでは、コマンドは “binstubs” の形式になっており、これらはアプリの bin ディレクトリ内にあるファイルです。したがって、bin/rails c を実行すると、コンソールを開始できるようになります。binstubs 内のコードに問題がある場合もあり、次のコマンドをローカルで実行してコードを更新できます。
$ bundle exec rake rails:update:bin
その後、結果をコミットします。rails のバージョンおよびインストール済みの gems によって、次のようなディレクトリが表示されることがあります。
$ ls bin
bundle puma pumactl rails rake setup spring update
bundle、rails、および rake がすべて存在することを確認します。Rails 5.0.1 で bin/rails ファイルがどのように表示されるかの例を次に示します。
$ cat bin/rails
#!/usr/bin/env ruby
APP_PATH = File.expand_path('../config/application', __dir__)
require_relative '../config/boot'
require 'rails/commands'
正しくない PATH
UNIX 系システムで、PATH はオペレーティングシステムが実行する正しいファイルを見つける方法を示すものです。rake などのコマンドを入力すると、PATH 上の各ロケーションを検索してそこに実行可能ファイルがあるかどうかをその名前によって確認し、ファイルを実行します。which <command> (which rake など) を実行することによって、ファイルが存在する場所を確認することができます。
PATH 環境変数を変更しないことを強くお勧めします。これは Heroku の buildpack およびビルドシステムによって維持する必要があります。
パス設定変数が設定されていないことを確認してください。これは不要でありシステムに有害となる可能性があります。
$ heroku config
# ...
PATH や GEM_PATH が表示される場合は、heroku config:unset PATH GEM_PATH でこれらを削除してください。