CentOS7サーバをSambaマウントしてWindows上のRubymineで開発するための環境構築方法

# 概要

Windows上のRubymineを使って、リモートの開発サーバ上にあるコードで開発を行いたい場合のシンプルな設定を紹介します。workgroupもDNSもADも使わないので、root権限のある開発サーバさえあれば社内インフラにお伺いをたてる必要もなく、「クソッ インフラエンジニアめ」と言わずにすみます:-)

# 事前準備・前提

* ユーザ/パスワードはvagrant/vagrant
* リモートの開発サーバにsshでアクセス可能
* /usr/local/rbenv 配下に rbenvがインストールされている
    * /home/vagrant/.rbenv の場合は適宜PATHを読み替えてください
    * 生rubyやrvmの場合は設定を適宜読み替えてください
* 目的のバージョンのrubyがインストールされている
    * ここでは2.3.1を使います
* firewallやSELinuxはoffにするか適切な設定
    * **セキュリティーはポリシーに応じて適切に設定してください**
* 動くrailsアプリ
    * ここでは「blog」というサンプルのrailsアプリを使う

※ vagrantというユーザを使っていますが、実際にvagrantを使う場合portの設定などが若干ややこしいと思います。特にRubymineのdebug実行は利用するポートが実行毎に変わるので。。

# 作業内容

## CentOS7側設定

``` shell
### 開発用ディレクトリの作成
$ sudo mkdir /var/share
$ sudo chown vagrant:vagrant /var/share

### railsアプリを/var/share配下に移動
$ mv blog /var/share

### Sambaのインストール
$ sudo yum install samba

### 設定ファイルを以下のように修正
# sudo vi /etc/samba/smb.conf
================================================
…(89行目あたり)
;       workgroup = MYGROUP				# セミコロンでコメントアウト
        server string = Samba Server Version %v				
        dos charset = CP932				# 追加
        unix charset = UTF-8			# 追加 
						
…(283行目あたり)
#============================ Share Definitions ==============================
[var]						# 追加
        path = /var			# 追加
        writable = yes		# 追加
================================================

### アクセス用アカウントの設定。パスワードはLinuxログイン用と同じでもOK。
$ sudo pdbedit -a vagrant
================================================
new password:
retype new password:
Unix username:        vagrant
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-2367142736-1598864955-974252496-1000
Primary Group SID:    S-1-5-21-2367142736-1598864955-974252496-513
Full Name:
Home Directory:       \\localhost\vagrant
HomeDir Drive:
Logon Script:
Profile Path:         \\localhost\vagrant\profile
Domain:               LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          木, 07  2月 2036 00:06:39 JST
Kickoff time:         木, 07  2月 2036 00:06:39 JST
Password last set:    金, 11 11月 2016 13:04:14 JST
Password can change:  金, 11 11月 2016 13:04:14 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
================================================

### Sambaを起動
$ sudo systemctl enable smb.service
$ sudo systemctl restart smb.service
```

## WindowsからLinuxサーバをSambaマウント

PCフォルダの適当なところを右クリックして「ネットワークの場所を追加する(L)」をクリック
![01.png](https://qiita-image-store.s3.amazonaws.com/0/20474/bb1cbde3-873c-64a0-dc99-151fc47d43e3.png)

「次へ(N)」をクリック
![02.png](https://qiita-image-store.s3.amazonaws.com/0/20474/eccf5cae-d27b-fd87-0415-c9a93359d4e6.png)

「カスタムのネットワークの場所を選択」を選択して「次へ(N)」をクリック
![03.png](https://qiita-image-store.s3.amazonaws.com/0/20474/a0af092b-bb34-0008-44c0-3d24a6bc9182.png)

「```\\(開発サーバのIPアドレス)\var```」と入力して「次へ(N)」をクリック
![04.png](https://qiita-image-store.s3.amazonaws.com/0/20474/c54b9a7b-bb6d-0f42-541e-145481a70ba5.png)

先ほど作成したSambaユーザのアカウントとパスワードを入力してOKを押す
![05.png](https://qiita-image-store.s3.amazonaws.com/0/20474/42ee5d9f-a907-146a-9491-22d8ed494779.png)

「次へ(N)」をクリック
![06.png](https://qiita-image-store.s3.amazonaws.com/0/20474/3aa0c410-5250-6f76-cc04-f82c6899f1cc.png)

「完了(F)」をクリック
![07.png](https://qiita-image-store.s3.amazonaws.com/0/20474/9ed4fdf7-b9df-97fd-ff29-0a3bb7db3b99.png)

1階層上のフォルダに移動 (もしくは `\\(開発サーバのIPアドレス)` をエクスプローラに直接入力)
![08.png](https://qiita-image-store.s3.amazonaws.com/0/20474/d5881796-7a66-aee2-2a3d-ef3f76dfc35a.png)

varフォルダを右クリックし、「ネットワークドライブの割り当て(M)」をクリック
![09.png](https://qiita-image-store.s3.amazonaws.com/0/20474/fb87bcb0-39b0-875c-946e-c7cc777ebd8d.png)

空いているドライブ(ここでは「Z:」)を選択して「完了(F)」クリック
![10.png](https://qiita-image-store.s3.amazonaws.com/0/20474/c7cd6bfd-8b90-66bf-c16e-ee3439ecefea.png)

## Rubymineの設定

Rubymineを立ち上げて「config」をクリック
![11.png](https://qiita-image-store.s3.amazonaws.com/0/20474/679b2281-8b00-5b27-af4e-8d9d1e1f81b2.png)

「Ruby SDK and Gems」を選択し、緑の「＋」をクリックした後「New remote」をクリック
![12.png](https://qiita-image-store.s3.amazonaws.com/0/20474/6245bc60-4855-71d7-08f4-b685641b0260.png)

ラジオボタンで「SSH Credentials」をチェックし、HostにサーバのIPアドレス、User name, PasswordにLinuxユーザの情報を入れてRuby interpreter pathの「...」をクリック
![13.png](https://qiita-image-store.s3.amazonaws.com/0/20474/46bb159d-9a76-3a8d-4734-e23188c4038d.png)

Yesをクリック
![14.png](https://qiita-image-store.s3.amazonaws.com/0/20474/ba64648b-3fdb-a947-78e9-577922dc9775.png)

「/usr/local/rbenv/versions/2.3.1/bin/ruby」を選択してOKをクリック
![15.png](https://qiita-image-store.s3.amazonaws.com/0/20474/60488ed8-eb45-f009-fdbe-4ccadc3612c8.png)

OKをクリック
![16.png](https://qiita-image-store.s3.amazonaws.com/0/20474/eddc5a58-7aa9-f99b-87d0-4c1754d62c68.png)

「Edit Path Mappings(ビックリマークの出てるアイコン)」をクリック
![17.png](https://qiita-image-store.s3.amazonaws.com/0/20474/1731939b-b981-ee90-717c-f8c4a0ab1248.png)

Local Pathの「...」をクリック
![18.png](https://qiita-image-store.s3.amazonaws.com/0/20474/5e09e1b8-b770-e7bd-5588-0a87d8fd597f.png)

「`Z:\share\blog`」を選択してOKをクリック
![19.png](https://qiita-image-store.s3.amazonaws.com/0/20474/673f5d18-601d-5b08-6c8c-ee39d19dc510.png)

Remote Pathの「...」をクリック
![20.png](https://qiita-image-store.s3.amazonaws.com/0/20474/f20599ae-c716-49ad-f2b4-77dc4b663ee8.png)

「`/var/share/blog`」を選択してOKをクリック
![21.png](https://qiita-image-store.s3.amazonaws.com/0/20474/936cf940-0f38-75ce-1b99-6a64e2fa38f0.png)

OKをクリック
![22.png](https://qiita-image-store.s3.amazonaws.com/0/20474/ce8fd701-e245-7969-8a27-2fec9bb8aa36.png)

緑の☑をクリックした後OKをクリック
![23.png](https://qiita-image-store.s3.amazonaws.com/0/20474/4409312c-2906-6eae-e532-abee2e08a9cf.png)

Openをクリック
![24.png](https://qiita-image-store.s3.amazonaws.com/0/20474/14e732c8-29de-0fb0-2b45-dff75f3b0311.png)

「`Z:\share\blog`」を選択してOKをクリック
![25.png](https://qiita-image-store.s3.amazonaws.com/0/20474/96aedb02-bd46-d5d3-1e64-3cf9cc66b529.png)

「Run」メニューの「Edit Configurations」をクリック
![26.png](https://qiita-image-store.s3.amazonaws.com/0/20474/3e4d9b74-1990-f013-b314-e087bce3336d.png)

IP address:にサーバのIPアドレスを入力し、「Bundler」タブをクリック
![27.png](https://qiita-image-store.s3.amazonaws.com/0/20474/409f1ead-bab3-17d6-ab46-11ccb5c645e8.png)

「Run the script in context of the bundle (bundle exec)」のチェックボックスにチェックを入れてOKをクリック
![28.png](https://qiita-image-store.s3.amazonaws.com/0/20474/188ae66c-fec2-f452-5f5a-e76a4fee9615.png)

* ここで一回Rubymineを立ち上げなおす
    * 単純に右上の×をクリックして終わらせて立ち上げなおしでOK

右下に表示された「RubyMine Gem Manager」の「install」リンクをクリック
![32.png](https://qiita-image-store.s3.amazonaws.com/0/20474/5cc50b49-6d86-7064-e2f9-01d7dfa663de.png)

「`--path vendor/bundle`」と入力して installをクリック
![33.png](https://qiita-image-store.s3.amazonaws.com/0/20474/cf94ec3b-3695-3e92-5615-d678215ff3da.png)

コンソール画面でbundle installが完了した事を確認する
![34.png](https://qiita-image-store.s3.amazonaws.com/0/20474/72e0c10f-0a96-d844-4c67-6540f9e808b9.png)

実行する
![29.png](https://qiita-image-store.s3.amazonaws.com/0/20474/8ac8df30-ea76-4cbf-de86-3db82e745fed.png)

コンソールに表示されたアドレス(ここでは`http://10.136.3.175:3000`)を確認してブラウザでアクセスする
![30.png](https://qiita-image-store.s3.amazonaws.com/0/20474/0a85754f-8148-04c0-0d50-553923f60680.png)

Railsの画面が表示された
![31.png](https://qiita-image-store.s3.amazonaws.com/0/20474/6d4147fa-817b-55e3-836e-4966c80ad6c1.png)

実行を停止する
![38.png](https://qiita-image-store.s3.amazonaws.com/0/20474/85f1ea7e-d9b7-d2e1-704b-326bfa522a6d.png)

* 実行を停止していない状態で再度実行ボタンをクリックしてしまうとプロセスが残ってしまう
    * サーバにログインしてプロセスをkillしないといけなくなる

## デバッグ実行の設定

Gemfileに「gem 'debase', '0.2.2.beta8'」「gem 'ruby-debug-ide', '0.6.1.beta2'」を追加
![35.png](https://qiita-image-store.s3.amazonaws.com/0/20474/e83a0bcf-6946-4ad6-c0b6-9ca8e0329937.png)

Toolsメニューで「Bundler -> Install」をクリック
![36.png](https://qiita-image-store.s3.amazonaws.com/0/20474/2ffc6a3a-acf6-b567-37d9-54139c650f6c.png)

「`--path vendor/bundle`」と入力して installをクリック
![33.png](https://qiita-image-store.s3.amazonaws.com/0/20474/cf94ec3b-3695-3e92-5615-d678215ff3da.png)

適当なところにブレークポイントをつけて(赤丸のついているあたりをクリックすると、図のように赤丸がつく)デバッグ実行(虫のアイコンをクリック)
![37.png](https://qiita-image-store.s3.amazonaws.com/0/20474/cf63bdf1-689d-6ff0-f376-a816ae23e419.png)

Webブラウザで`http://10.136.3.175:3000`にアクセスし、indexアクションが実行されるページに遷移すると以下のように実行が停まり、パラメータ等確認できる
![39.png](https://qiita-image-store.s3.amazonaws.com/0/20474/db3f0734-76f3-ea6f-e560-02c91373d4c5.png)

# 最後に

三ヵ月前にRubymineを使い始めたのですが生産性の高さに驚くばかりです。様々なサイトを参考にカスタマイズしているのですが、Macが前提の説明が多いので[Rubymineの設定まとめ (Windows)](http://qiita.com/ftakao2007/items/3626e34a8d4cda29eec8)という記事も常時更新中です。ご参考まで。

# 参考
* [Rubymineの設定まとめ (Windows)](http://qiita.com/ftakao2007/items/3626e34a8d4cda29eec8)
    * コンソールの文字化け対策やショートカットなどWindows版のRubymineについてまとめてます :-)
* ファイルの権限が変更されることの対応
    * この環境でRubymineを使ってコードを編集すると、ファイルの権限が変わってしまうのでgit上のコードの権限は変更されないように`cd (railsアプリのPATH); git config core.filemode false`　を実行しておくとよい
        * [Git でファイルパーミッションの変更（chmod）を無視する - git config core.filemode false](http://tetsuwo.tumblr.com/post/36066698390/git-chmod-git-config)
* Windowsが覚えてしまったSambaの認証情報を削除
    * Windowsのコマンドプロンプトで`rundll32 keymgr.dll KRShowKeyMgr` で対象のサーバの情報を削除・編集を行う