アプリの Ruby または Rake の正しくないバージョン
最終更新日 2017年11月15日(水)
Table of Contents
アプリで次のようなコマンドを実行したとします。
$ 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
でこれらを削除してください。