質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
同期

複数のディレクトリに存在するファイルを更新した場合に、すべてのファイルにも更新が行われる事、又は、同じ記憶領域に同時にアクセスして内容の整合性が失われてしまう事をを防ぐ制御などを同期と呼びます。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Q&A

解決済

1回答

5550閲覧

VirtualBoxの共有フォルダが遅い

maisumakun

総合スコア145121

同期

複数のディレクトリに存在するファイルを更新した場合に、すべてのファイルにも更新が行われる事、又は、同じ記憶領域に同時にアクセスして内容の整合性が失われてしまう事をを防ぐ制御などを同期と呼びます。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

3グッド

1クリップ

投稿2017/06/03 01:06

状況

Windows上でRuby on Railsの開発をしていたのですが、Windows直置きだといろいろ制約も発生するので、VirtualBoxでの開発に乗り換えました。

ところが、1ページ表示するのに数秒かかるような状態となっています。変だと思ったので調べてみると、開発モードでビューを表示する際に、Sprocketsで行われる各アセットファイルの状態チェックに時間が食われていることが判明しました。

物は試しに、共有ディレクトリ全体を仮想マシン内にコピーしてみたところ、1秒以内に出るようになりましたので、VirtualBoxの共有フォルダが足を引っ張っているのはほぼ間違いない状況です。

調べてみたこと

仮想マシン内で、共有フォルダと同期したフォルダにコピーという手段も考えてみたのですが、vboxsfにはinotifyがなく、また実装するのも困難とのことで、inotifyに依存するツールも使えない状況です。

やりたいこと

「Windows上でファイルを編集して、何の操作もせずにRails上にすぐ反映される」ことと「Railsの表示で、ファイルアクセスのために過剰に待たされない」ことが両立できることです。例えば、以下のような方法が考えられますが、全く別ルートでも解決できれば問題ありません。

  • VirtualBoxの共有フォルダを高速化する
  • Windows側のフォルダを変更すれば自動でVirtualBoxローカルなフォルダに反映される

制約条件

ただし、以下のような手段は考慮の対象外とします。

  • Windows 10、VMware、SSDなど、有償のものが必要となるような手段
  • Rails 5.0以降へのアップデート(今のところ頓挫中です)

あと、できれば「CentOS 7など、仮想マシンのディストリビューション変更を必要とする手段」や「Sprockets依存を脱却する」というような方法も避けていただければありがたいです。

環境

ホスト側

  • Windows 7 x64
  • VirtualBox 5.1.22(質問時点の最新版)
  • Visual Studio Code

ゲスト側

  • CentOS 6.9 x64
Linux (マシン名) 2.6.32-696.1.1.el6.x86_64 #1 SMP Tue Apr 11 17:13:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
  • ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-linux]
  • Ruby on Rails 4.2.8
  • sprockets 3.7.1、sprockets-rails 3.2.0
gouf, yuusukk, KiyoshiMotoki👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

結局、MSYS2用のrsyncをGit Bash環境に入れて、Fwatchでフォルダの変更を監視しておいて、何か変わればrsyncを駆動する、という形にすることで、それなりにスムーズに動くようになりました。

投稿2017/06/05 01:44

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問