2016-03-12 7 views
11

私は、自分のレールサーバがコントローラ、モデル、および他のファイルを変更した後にリロードしないことに気付きました。私はVagrantとRails APIを使用していますが、一部の人々はVagrantfileに以下の行を追加することでこの問題を解決しています。Railsサーバはコードの変更とリロードファイルを見ない

config.vm.provider "virtualbox" do |vb| 
    vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 5000 ] 
end 

これは問題を解決しません。私はこの問題を解決するために他に何ができるのか、アイデアが不足しています。私はあなたの役に立つかもしれないファイルを添付します。

Gemfileは、次のようになります。

source 'https://rubygems.org' 

gem 'rake', '< 11.0' 

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '>= 5.0.0.beta3', '< 5.1' 
# Use mysql as the database for Active Record 
# gem 'mysql2', '>= 0.3.18', '< 0.5' 

# User PostgreSQL as the database for Active Record 
gem 'pg', '~> 0.18' 

gem 'active_model_serializers' 

gem 'rspec-its' 

gem 'database_cleaner' 

# Use Puma as the app server 
gem 'puma' 
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
# gem 'jbuilder', '~> 2.0' 
# Use Redis adapter to run Action Cable in production 
# gem 'redis', '~> 3.0' 
# Use ActiveModel has_secure_password 
# gem 'bcrypt', '~> 3.1.7' 

# Gem allowing using external APIs 
gem 'httparty' 

# Auth0 gem for authentication using JWT 
gem 'knock' 

gem 'jwt' 

# OpenID Omniauth gem for authenticating Steam users 
gem 'omniauth-steam' 

# Gem for managing environment variables 
gem 'figaro' 

# Use Capistrano for deployment 
# gem 'capistrano-rails', group: :development 

# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible 
gem 'rack-cors', :require => 'rack/cors' 

group :development, :test do 
    # Call 'byebug' anywhere in the code to stop execution and get a debugger console 
    gem 'byebug' 
    gem 'rspec-rails', '~> 3.0' 
    gem 'factory_girl_rails' 
    gem 'ffaker' 
end 

group :test do 
    gem 'shoulda-matchers' 
    gem 'json-schema' 
end 

group :development do 
    gem 'listen', '~> 2.10' 
    # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 
    gem 'spring' 
    gem 'spring-watcher-listen', '~> 2.0.0' 
end 

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem 
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 

私はこれは私のdevelopment.rbファイルであるため、ログのbegginingの

=> Booting Puma 
=> Rails 5.0.0.beta3 application starting in development on http://0.0.0.0:3000 
=> Run `rails server -h` for more startup options 
=> Ctrl-C to shutdown server 
Puma starting in single mode... 
* Version 3.1.0 (ruby 2.2.3-p173), codename: El Niño Winter Wonderland 
* Min threads: 5, max threads: 5 
* Environment: development 
* Listening on tcp://0.0.0.0:3000 

、私は開発モードで自分のサーバーを実行することを確信している

Rails.application.configure do 
    # Settings specified here will take precedence over those in config/application.rb. 

    # In the development environment your application's code is reloaded on 
    # every request. This slows down response time but is perfect for development 
    # since you don't have to restart the web server when you make code changes. 
    config.cache_classes = false 

    # Do not eager load code on boot. 
    config.eager_load = false 

    # Show full error reports. 
    config.consider_all_requests_local = true 

    # Enable/disable caching. By default caching is disabled. 
    if Rails.root.join('tmp/caching-dev.txt').exist? 
    config.action_controller.perform_caching = true 

    config.action_mailer.perform_caching = false 

    config.cache_store = :memory_store 
    config.public_file_server.headers = { 
     'Cache-Control' => 'public, max-age=172800' 
    } 
    else 
    config.action_controller.perform_caching = false 

    config.action_mailer.perform_caching = false 

    config.cache_store = :null_store 
    end 

    # Don't care if the mailer can't send. 
    config.action_mailer.raise_delivery_errors = false 

    # Print deprecation notices to the Rails logger. 
    config.active_support.deprecation = :log 

    # Raise an error on page load if there are pending migrations. 
    config.active_record.migration_error = :page_load 


    # Raises error for missing translations 
    # config.action_view.raise_on_missing_translations = true 

    # Use an evented file watcher to asynchronously detect changes in source code, 
    # routes, locales, etc. This feature depends on the listen gem. 
    config.file_watcher = ActiveSupport::EventedFileUpdateChecker 
end 

私のVagrantfile

Vagrant.configure(2) do |config| 

    if Vagrant.has_plugin?("vagrant-timezone") 
    config.timezone.value = "Europe/Warsaw" 
    end 

    config.vm.box = "ubuntu/trusty64" 

    config.vm.network :forwarded_port, guest: 3000, host: 3000 
    config.vm.synced_folder "E:/Projekty - Rails", "/home/projekty" 

    config.vm.provider "virtualbox" do |vb| 
    vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 5000 ] 
    end 
end 
+0

を、あなたはconfig.threadsafeを追加することができます!ライン。それが動作しているかどうかを確認してください。 –

+0

@MohammadShahadatHossainサーバーを起動しようとするとerorrが発生します。私はレールのAPIを使用しているので、それはおそらく理由、なぜですか? – mparkitny

+0

rails apiを使用しても問題ありません。いくつかの構成が欠落している可能性があります。そのため、問題が発生しています。 –

答えて

10

development.rbファイルに次の行を追加して問題を解決しました。

config.reload_classes_only_on_change = false 
+0

これは何らかの理由で私のPumaサーバーを非常に遅くし、私の開発者のセッションルートのいくつかを壊し始めました。奇妙な。もう一度やり直して、まだ起こっているかどうかを確認します。 –

+0

ええ、それは私に '読み取りエラーを与える:#問題。私が間違って行った変更や副作用によって引き起こされたものかどうかはわかりません。 –

+0

@JayKilleenプロジェクトでDeviseを使用していないので、この種のエラーは発生しませんでした。迅速な調査の後、私はあなたの問題に対する可能な解決策を見つけました。詳細は[link](http://stackoverflow.com/a/27990374/3648015)を読んでみてください。 – mparkitny

0

私は同じ問題を抱えていたので、このような簡単なスクリプトを作成しました。最初にあなたのアプリフォルダにいることを確認してください。

$ sudoのナノ

#/ binに/ bashの

すくいデシベルをバンプ:!エコー エコー "MIGRATED" すくいルートに を移行し、 "ルーティング" sudoのサービスapache2の再起動にリロード エコー「のWebサーバー「

CTL + X、Yは、入力

須藤のchmodの+ xは

バンプ

./bumpと入力すれば、3つのコマンドがすべて実行され、すべてがロードされていることがわかります。私はまた、deviseのような宝石用のコマンドラインインストールのようにこれを繰り返すためにこの方法を使います。

46

It doesn't fix the problem for me.

ポーリングすることにより、ファイルの変更を検出しますconfig/environments/development.rb

#config.file_watcher = ActiveSupport::EventedFileUpdateChecker 
config.file_watcher = ActiveSupport::FileUpdateChecker 

FileUpdateCheckerに追加します。

+0

は私のdevelopment.rbで変更され、魅力のように動作します - ありがとう – Hannes

+0

私のためにも働いています。私は2週間以上にわたってRails 5ベータのバグだと思っていました。ありがとうございました! – Abdulaziz

+3

こんにちは、Rev3rse。バーチャルボックスの共有フォルダを使用すると、この問題が発生しました。 OS(vm実行中)は共有フォルダ内のファイル変更イベントを検出できないためです。 – pocari

0

ポカリの解決策は私のために働いたが、ページがリロードされるまで数秒待たなければならなかった。さもなければ内容は常に更新されなかった。this answerで説明したようにsynced_folderにオプションを追加する

はうまく働いた:development.rbファイルで

config.vm.synced_folder ".", "/vagrant", type: "nfs", mount_options: ['actimeo=1'] 

(およびdevelopment.rbの変更は必要ありません)

関連する問題