MOGOKのrubyのバージョンを変更（Redmine)

## 更新情報

- 2015/11/01 追記
 - MOGOKで利用できるrubyのバージョンに、2.2が加わっています。
 - 逆に、1.9系がサポートから外れましたので注意。
 - 更新手順は、このメモの本文にあるとおり変更はありません。

```
# mogokコマンドでの確認方法
$ mogok ruby_version list
2.0
2.1
2.2
``` 

## Ruby 2.0 / 2.1が使えるように

MOGOKのrubyのバージョンは、1.9xだったのですが、8月から2.0, 2.1が使えるようになっていました。

* https://portal.mogok.jp/announcements/91

redmine.jp のインストールガイドでは、2014年10月4日時点で、ruby2.0の例が出ていますが、ruby2.1.xでも動きます。

* [Redmine2.5をCentOS6.5にインストールする手順](http://redmine.jp/guide/RedmineInstall/)

今回は、MOGOKで動かしているRedmineのrubyのバージョンを上げてみることにしました。

## コマンドラインでの確認

MOGOK用のコマンドラインツールも、サービスのオプションが変わったことでバージョンも上がり、オプションで指定できるコマンドも増えました。

このメモを書いている時点のバージョンは、2.0.11です。こちらを使ってまずは確認をします。
(gem updateしましょう）

```
% mogok -v
mogok gem version 2.0.11

% mogok ruby_version list
1.9.3
2.0
2.1
```
コマンドラインからも、rbenvのように、rubyのバージョンが指定できるようです。

### コマンドラインから確認（変更前）

```
% mogok ruby_version
1.9.3
% mogok info
AppName:                  redmine-akiko
RubyVersion:              1.9.3
BuildStatus:              Done
AppStatus:                Running
WorkerStatus:             Stopped
AllocatedAppInstances:    1
RunningAppInstances:      1
AllocatedWorkerInstances: 0
RunningWorkerInstances:   0
Repository:               https://git.mogok.jp/redmine-akiko.git
URL:                      http://redmine-akiko.ruby.iijgio.com/
```

### 画面上でも確認（変更前）
Redmineの管理画面からも、rubyのバージョンが確認できます。

![redmine-r193.png](https://qiita-image-store.s3.amazonaws.com/0/27976/eabf06f1-cb9e-5002-ed08-c0e6fd15baf2.png "redmine-r193.png")

## コマンドラインでの変更
mogokのコマンドラインから、rubyのバージョン変更と、アプリケーションの再開ができます。

まずは、アプリケーションを停止し、それからrubyのバージョンを変更。
（停止しなくても変更は出来ましたが、実際に反映させるには、stop -> build-> startが必要でした）

```
% mogok stop
Application stopped.

% mogok ruby_version 2.1
Done.
% mogok ruby_version
2.1
```

次に、再度buildし、startします。

```
% mogok build
Preprocessing..
Git pulling..
Bundler installing..

... [略] ...

Package creating..
Done!

% mogok start
Application started.

```

### コマンドラインから確認（変更後）

では、確認。

```
% mogok info
AppName:                  redmine-akiko
RubyVersion:              2.1
BuildStatus:              Done
AppStatus:                Running
WorkerStatus:             Stopped
AllocatedAppInstances:    1
RunningAppInstances:      1
AllocatedWorkerInstances: 0
RunningWorkerInstances:   0
Repository:               https://git.mogok.jp/redmine-akiko.git
URL:                      http://redmine-akiko.ruby.iijgio.com/
```

### 画面上でも確認（変更後）

Redmine側の設定も確認します。うまく変わっています。

![redmine-r212.png](https://qiita-image-store.s3.amazonaws.com/0/27976/7037de24-e924-8fd6-b489-e7a808982693.png "redmine-r212.png")

## おまけ：mogok rakeでリモートのrakeコマンドを実施

mogokコマンドの中で、mogok rake -Tとすると、Redmineで利用できるrakeコマンドが表示されます。
ローカル環境と同じように、rake xxx ならmogok rake xxxで、結果が判ります。

今回は、ソースコード中の **note** を表示させてみます。

```
% mogok rake notes
Running 'rake notes'...

... いくつかwarning ...

2014-10-04TMM:HH:SS+09:00 console[app3009.26]: app/controllers/activities_controller.rb:
2014-10-04TMM:HH:SS+09:00 console[app3009.26]:   * [ 67] [TODO] refactor, duplicated in projects_controller
2014-10-04TMM:HH:SS+09:00 console[app3009.26]:
2014-10-04TMM:HH:SS+09:00 console[app3009.26]: app/controllers/application_controller.rb:
2014-10-04TMM:HH:SS+09:00 console[app3009.26]:   * [289] [TODO] some subclasses override this, see about merging their logic
2014-10-04TMM:HH:SS+09:00 console[app3009.26]:
2014-10-04TMM:HH:SS+09:00 console[app3009.26]: app/controllers/issues_controller.rb:
2014-10-04TMM:HH:SS+09:00 console[app3009.26]:   * [111] [TODO] use #select! when ruby1.8 support is dropped
2014-10-04TMM:HH:SS+09:00 console[app3009.26]:   * [374] [TODO] Refactor, not everything in here is needed by #edit
2014-10-04TMM:HH:SS+09:00 console[app3009.26]:   * [401] [TODO] Refactor, lots of extra code in here
2014-10-04TMM:HH:SS+09:00 console[app3009.26]:   * [402] [TODO] Changing tracker on an existing issue should not trigger this
2014-10-04TMM:HH:SS+09:00 console[app3009.26]:
2014-10-04TMM:HH:SS+09:00 console[app3009.26]: app/controllers/journals_controller.rb:
2014-10-04TMM:HH:SS+09:00 console[app3009.26]:   * [ 89] [TODO] implement non-JS journal update

.... [以下略] ....

```
以上、rubyのバージョンは、コマンド少しで簡単に変更できました。