Lodgeインストール手順メモ

個人用メモ
QiitaライクなOSSの知識共有サービスLodgeの導入方法

## 事前準備

2016/02時点
[公式のGithub](https://github.com/lodge/lodge)ではRubyのバージョンは2.0.0となっているが2.4では動作せず、2.0ではインストールでエラーが発生。安定版のRuby 2.1.8 では動作を確認  

2016/06時点
公式のインストール手順が更新されているのを確認  
Ruby 2.1以上で動作するらしい(現時点では未確認)

|必要なもの|バージョン|
|--------------|--------------|
|Ruby|2.1.8|
|Gem|2.2以上|
|Bundler||
|MySQL||
|sqlite3||

MySQLとsqlite3はどちらか片方でよい

CentOS6.5では以下のパッケージが必要になった

- libicu
- gcc-c++
- cmake

## インストール手順

1. Lodgeのプロジェクトをcloneする  
    自分のインストール時は、下記コマンドにより /usr/local/src/lodge にcloneした  

    ```
    git clone https://github.com/m-yamashita/lodge.git /usr/local/src/lodge
    ```

2. プロジェクトのディレクトリに移動してdatabase.ymlを作成する  
    database.example.ymlをコピーして利用するDBのコメントアウトを外す(必要なら値を修正する)

    ```
    cd /usr/local/src/lodge
    cp config/database.example.yml config/database.yml
    vi config/database.yml
    ```

    sqlite3を利用するため、database.ymlの内容は以下のようになる

    ```
    default: &default
      # === sqlite3 ===
      adapter: sqlite3
      encoding: utf8
      pool: 5
    
    #  # === mysql ===
    #  adapter: mysql2
    #  host: localhost
    #  username: your_mysql_user_name
    #  password: your_mysql_password
    #  encoding: utf8
    #  pool: 5
    ```

3. 依存ライブラリをインストールする  
    以下のコマンドを実行して依存ライブラリをインストールする

    ```
    bundle install --path vendor/bundle
    ```

4. .envファイルを作成する  
    .env.example をコピーしてコメントを見ながら環境に合わせてパラメータを修正する  
    検証キーと認証キーはbundle exec rake secretで生成した
    実行したコメントは以下

    ```
    cp .env.example .env
    # コメントを見てパラメータを修正
    vi .env
    # キーを生成して.envファイルに挿入
    sed -i -e "s/__some_random_string__/`bundle exec rake secret`/" .env
    ```

5. データベースの作成  
    以下のコマンドを実行し、データベースを作成する

    ```
    bundle exec rake db:create RAILS_ENV=production
    ```

6. テーブルの作成  
    以下のコマンドを実行し、テーブルを作成する

    ```
    bundle exec rake db:migrate RAILS_ENV=production
    ```

7. 絵文字データをダウンロードする  
    https://github.com/github/gemoji にある絵文字を、以下のコマンドでダウンロードする

    ```
    bundle exec rake emoji
    ```

### コマンドのみ

```
git clone https://github.com/m-yamashita/lodge.git /usr/local/src/lodge
cd /usr/local/src/lodge
cp config/database.example.yml config/database.yml
vi config/database.yml
bundle install --path vendor/bundle
cp .env.example .env
vi .env
sed -i -e "s/__some_random_string__/`bundle exec rake secret`/" .env
bundle exec rake db:create RAILS_ENV=production
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake emoji
```

## 起動

Lodgeをクローンしたディレクトリに移動して起動コマンドを実行する

```
cd /usr/local/src/lodge
bundle exec rails server -e production
```

なお、LodgeはUnicorn, Thin, WEBrickのどれかで起動できる
起動コマンドはそれぞれ以下になる

```
# Unicorn
bundle exec unicorn -c config/unicorn.rb -E production
# Thin
buncle exec rails server thin -e production
# WEBrick
bundle exec rails server -e production
```

http://[サーバドメイン]:3000/ にアクセスし、Lodgeのログイン画面が表示されれば起動完了

### URLプレフィックスをつける

http://[サーバドメイン]:3000/lodge のように、URLプレフィックスを付けて利用するために以下のことを行う

1. config.ru の runをラッピングしてrelative urlを適用させる
2. RAILS_RELATIVE_URL_ROOTを指定して起動する

config.ruを以下のように修正する

```config.ru
# This file is used by Rack-based servers to start the application.

require ::File.expand_path('../config/environment',  __FILE__)
map ActionController::Base.config.relative_url_root || "/" do
    run Rails.application
end
```

WEBrickで動作
http://[サーバドメイン]:3000/lodge でアクセス
デーモンで起動

の場合の起動コマンドは以下

```
RAILS_RELATIVE_URL_ROOT='/lodge' bundle exec rails server -e production --daemon
```

UnicornやThinでも起動可能と思われるが起動・動作は未確認

## 参考サイト

- Lodge公式 https://github.com/lodge/lodge
- Rails With Relative URL Root http://quickhack.net/nom/blog/2012-09-19-rails-with-relative-url-root.html
- sqlite3-rubyのインストール http://d.hatena.ne.jp/aTaGo/20100708/1278608962