なんのために

個人プロジェクトをタスク管理したくなりました。

タスク管理しなければ、思い出すだけで時間が過ぎてしまって、遅々として進まず、いつの間にか立ち消えてしまう運命をたどりやすいです。

そうならないための対策です。

Redmine を建てる、無料で

タスク管理では、日常的に Redmine を使っています。

特に新しいツールを覚えたいわけでもなく、 慣れて無料で利用できる Redmine が良かったですね。

問題は環境です。

VPC や GAE も考えましたが、できるだけコストを抑えたかったので、前例が結構ある Heroku にインストールしてみました。

前例があると入っても、エラーなどの対処で半日くらいかかりました。

たどった手順

環境

  • MacBook M1 + Big Sure
  • Ruby 2.6.6
  • Heroku

参考にした記事

Redmine3.0系をHerokuで動かせるようにする
https://qiita.com/KazuyaHara/items/27818ad3e7285cfefde1

やったこと

最新版をクローンし、

1$ git clone git://github.com/redmine/redmine.git
1$ cd redmine

に移動します。


Heroku デプロイ向けに .gitignore を編集します。

削除するもの

1/config/configuration.yml
2/config/email.yml
3/config/initializers/session_store.rb
4/config/initializers/secret_token.rb
5/public/plugin_assets
6/Gemfile.lock
7/Gemfile.local

追加するもの

1/vendor/bundle

を追加する。


Gemfile を編集します。

1ruby '>= 2.4.0', '< 2.8.0'

のバージョン部分を

1ruby '2.2.1'
2ruby '>= 2.4.0', '< 2.8.0'

としました。ここは脳死でやってます。

次に、 Gemfile

1database_file = File.join(File.dirname(__FILE__), "config/database.yml")
2if File.exist?(database_file)

から、

1else
2  warn("Please configure your config/database.yml first")
3end

までをバッサリ削除し、代わりに次を追加して保存します。

1group :production do
2  gem "pg", ">= 0.11.0", :platforms => [:mri, :mingw, :x64_mingw]
3  gem 'rails_12factor'
4  gem "activerecord-jdbcpostgresql-adapter", :platforms => :jruby
5end

config/application.rb をひらき

require 'sprockets/railtie' がコメントされていればコメントを外し、

1  class Application < Rails::Application

1  class Application < Rails::Application
2    config.assets.initialize_on_precompile = false

とします。
私は、これを宣言する場所が悪かったようで、ここでかなりハマりました。

ここまでやったらパッケージをインストールします。

1$ bundle install --path vendor/bundle --without development test rmagick

Redmine の下にインストールするように --path vendor/bundle 必須です。

また、 macOS で、 Permission Error が発生する場合は、 OS 標準の Ruby ではなくて、 Homebrew から Ruby をインストールしてー、という対応が必要です。
大変です。

つづけて、次を実行してセッションストアを初期化します。

1$ bundle exec rake generate_secret_token

アセットのマニフェストも追加しました。 /app/assets/config/manifest.js がなければ追加します。

/app/assets 以下に何もファイルがないと思うので、 manifest.js モカラのファイルをコミットで OK でした。


次に Heroku です。

サインインして、コマンドラインツールをインストールします。

1$ brew install heroku/brew/heroku

Heroku にログインし、

1$ heroku login

アプリを新規作成し、

1$ heroku create myredmine

PostgreSQL をインストール、

1$ heroku addons:add heroku-postgresql

手元で変更したファイルをコミットし、 Heroku に Push します。

1$ git add .
2$ git commit -am "Redmine setting"
3$ git push heroku master

Push がうまく言ったら、初期設定をします。

migrate を実行し、

1$ heroku run rake db:migrate RAILS_ENV=production

初期データを設定し、

1$ heroku run rake redmine:load_default_data RAILS_ENV=production

最後に再起動して完了です。

1$ heroku restart

以上で Redmine が表示されるはず。

Redmine
Redmine

されましたー。

初期アカウントは admin/admin 担っているのでログインしてパスワードを変更してください。

Basic 認証を設定する

ついでに、 Basic 認証 を設定しました。

app/controllers/application_controller.rb を開き、次を追記

1http_basic_authenticate_with :name => ENV['BASIC_AUTH_USERNAME'], :password => ENV['BASIC_AUTH_PASSWORD'] if Rails.env == "production"

追記場所は def verify_authenticity_token の直前に入れました。

この変更を Commit Push し、

Heroku に環境変数を設定

1$ heroku config:add \
2  BASIC_AUTH_USERNAME="user_name" \
3  BASIC_AUTH_PASSWORD="password"

でした。

これはスッとできましたー。