2016-03-12 6 views
11

Ich habe festgestellt, dass mein Rails-Server keine Controller, Modelle und wahrscheinlich andere Dateien neu lädt, nachdem ich sie geändert habe. Ich benutze Vagrant und Rails API, und ich habe festgestellt, dass einige Leute dieses Problem beheben, indem sie unter der Vagrantfile Zeile hinzufügen.Rails-Server sieht keine Codeänderungen und lädt Dateien neu

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

Es behebt das Problem nicht für mich. Ich habe keine Ideen mehr, was ich noch tun kann, um dieses Problem zu lösen. Ich füge Dateien an, die für Sie nützlich sein könnten.

Mein Gemfile sieht wie folgt aus:

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] 

Ich bin sicher, dass ich meine Server im Entwicklungsmodus ausgeführt werden, da der beggining des Stammes

=> 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 

Das ist mein development.rb Datei

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 

Mein 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

In development.rb-Datei können Sie hinzufügen config.threadsafe! Linie. Bitte überprüfen Sie, ob es funktioniert oder nicht? –

+0

@MohammadShahadatHossain es verursacht error, wenn ich versuche, den Server zu starten. Ich benutze rails api, also ist es wahrscheinlich der Grund warum, richtig? – mparkitny

+0

mit Schienen api sollte kein Problem sein. Möglicherweise fehlt eine Konfiguration, weshalb das Problem auftritt. –

Antwort

10

Ich habe mein Problem gelöst unter der Zeile development.rb Datei hinzufügen.

config.reload_classes_only_on_change = false 
+0

Das hat meinen Puma-Server aus irgendeinem Grund sehr langsam gemacht und damit begonnen, einige meiner Benutzer-Session-Routen zu zerstören. Seltsam. Werde es noch einmal versuchen und sehen, ob es noch passiert. –

+0

Ja, es gibt mir einen 'Lesefehler: #

+0

@JayKilleen Ich habe Devise nicht in meinem Projekt verwendet, daher bin ich auf diese Art von Fehlern nicht gestoßen. Nach kurzer Recherche fand ich eine mögliche Lösung für Ihr Problem. Sie können mehr [link] (http://stackoverflow.com/a/27990374/3648015) lesen und es versuchen. – mparkitny

0

ich das gleiche Problem mit war so, was ich tat, war eine schnelle Skript wie diese machen. Stellen Sie sicher, dass Sie sich zuerst in Ihrem App-Ordner befinden.

$ sudo nano Bump

#/bin/bash

rake db: echo "MIGRIERT" Rake Routen echo "geroutet" sudo Service apache2 Neustart echo „Web-Server migriert werden neu geladen "

CTL + x, Y, eingeben

sudo chmod + x Bump

Jetzt können Sie einfach ./bump eingeben und es werden alle drei Befehle ausgeführt, dann wissen Sie, dass alles geladen ist. Ich benutze diese Methode auch, um das zu wiederholen, wie die Befehlszeileninstallationen für Edelsteine ​​wie z. B. devise.

46

It doesn't fix the problem for me.

auf die durch die Abfrage der Änderung der Datei config/environments/development.rb

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

FileUpdateChecker erkennt hinzuzufügen.

+0

in meiner development.rb geändert und funktioniert wie ein Charme - danke – Hannes

+0

Arbeitete auch für mich. Ich habe mehr als 2 Wochen lang gefühlt, dass es ein Bug mit Rails 5 Beta ist. Vielen Dank! – Abdulaziz

+3

Hallo, Rev3rse. Mit dem freigegebenen Ordner der Virtual Box ist dieses Problem aufgetreten. Weil OS (in running vm) kein Dateiänderungsereignis in freigegebenen Ordnern erkennen kann. – pocari

0

pocaris Lösung funktionierte für mich, aber ich musste ein paar Sekunden warten, bevor eine Seite neu geladen wurde, ansonsten wurde der Inhalt nicht immer aktualisiert.

arbeitete eine Option zum synced_folder wie in this answer beschrieben Hinzufügen fein:

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

(und die Änderung der development.rb ist nicht erforderlich)