Skip to content
shunter1112 edited this page Sep 12, 2013 · 5 revisions

アプリケーションのソースコード、依存関係、サイズの小さな静的アセット(CSS、イメージファイル等)、多くの設定ファイルは、Herokuへのデプロイ時に、Gitのリポジトリ内をチェックされるべきです。

ログファイルや、大きな静的アセット、SQLiteのデータベースファイルのようなものは全て、リポジトリ内にある1つ、またはそれ以上の.gitignoreファイルを経由して無視(ignore)されるべきです。このことは、slugのサイズを小さくすることにもなりますし、新たなdynoが起動されるスピードを速めることにもなります。

ディレクトリを無視(ignore)する

Gitでのデプロイ時、リポジトリのブランチがHerokuへプッシュされます。logtmpディレクトリのような余分なアセットが送られないよう、これらの特定のアセットを無視するようGitを調整し、リポジトリからは取り除いて下さい。設定は、.gitignore内で行います。

いくつかの言語のフレームワークでは、.gitignoreファイルを自動的に生成します。.gitignoreに記述されたパターンにマッチするファイルが、リポジトリに追加されることはありません。既に.gitignoreがアプリケーションフォルダのルートに存在していることでしょう。そこには既にいくつかの無視するパターンが追加されていることと思います。ただ、無視したいフォルダが別にも存在し、このファイル自体を調整したいと考えることもあるでしょう。

logtmpディレクトリの中身を無視する必要がある場合を仮定してみます。 この例では、logフォルダ内の*.logに該当するファイルを無視するアプローチと、 tmpフォルダ内を完全に無視するアプローチを使ってみています。

:::term
$ git rm -r -f log
rm 'log/development.log'
rm 'log/production.log'
rm 'log/server.log'
rm 'log/test.log'
$ git rm -r -f tmp
fatal: pathspec 'tmp' did not match any files

$ mkdir log
$ echo '*.log' > log/.gitignore
$ git add log
$ echo tmp >> .gitignore
$ git add .gitignore
$ git commit -m "ignored log files and tmp dir"

SQLiteのファイルを無視(ignore)する

ローカルデータベースとしてSQLite(いくつかの言語のフレームワークではデフォルトである)を使用している場合、上記までと同様にデータベースのファイルを無視するべきです。そのための方法がこちらです。:

:::term
$ git rm -f db/*.sqlite3
$ echo '*.sqlite3' >> .gitignore
$ git add .gitignore
$ git commit -m "ignored sqlite databases"

追加で読んでおきたい物

Clone this wiki locally