3

我有一个在 rails 3.2.8 上运行的 rails 应用程序。

只有当我重新启动服务器时,模型才会更新,对它们所做的任何更改都不会在服务器重新启动之前显示出来。

我正在开发中运行,缓存类已关闭。

有没有其他人有这个问题,我真的很感激一些帮助。谢谢。

我已经重新安装了 rvm、ruby 和我的 gemset。

我已经尝试了我能想到的一切来修复它。感谢大家的关注。

编辑:我在下面添加了大量配置细节......

发展.rb

XXXXX::Application.configure do
  config.cache_classes = false
  config.whiny_nils = true
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_deliveries = true
  config.action_mailer.delivery_method = :sendmail
  config.active_support.deprecation = :log
  config.action_dispatch.best_standards_support = :builtin
  config.active_record.mass_assignment_sanitizer = :strict
  config.active_record.auto_explain_threshold_in_seconds = 0.5
  config.assets.compress = false
  config.assets.debug = true
  config.action_mailer.default_url_options = { :host => 'yyyy.xxxx.net' }

  #this is an attempt to fix the issues, didn't work
  config.to_prepare do
    ['algorithm', 'key_dates', 'roles', 'status'].each do | file_name |
      require "#{Rails.root}/app/models/user/#{file_name}.rb"
    end
  end

end

我的用户模型包含一些模块,如下所示:

class User < ActiveRecord::Base
  include Status, Roles, KeyDates, Algorithm
  #.....
end

模块是这样定义的

module User::Status

  def self.included(base)
    base.class_eval do
      extend ClassMethods
      include InstanceMethods
    end
  end
  #.....
end

应用程序.rb

require File.expand_path('../boot', __FILE__)

require 'csv'
require 'rails/all'

if defined?(Bundler)
  Bundler.require(*Rails.groups(:assets => %w(development test)))
end
module XXXXX
  class Application < Rails::Application
    config.encoding = "utf-8"
    config.filter_parameters += [:password]
    config.active_record.whitelist_attributes = true
    config.assets.enabled = true
    config.assets.version = '1.0'
    config.autoload_paths += Dir["#{config.root}/app/models/**/"]
    config.to_prepare do
      Devise::Mailer.layout "mailout"
      Devise::Mailer.helper :application
    end
  end
end

宝石锁:

GEM
  remote: https://rubygems.org/
  specs:
    actionmailer (3.2.8)
      actionpack (= 3.2.8)
      mail (~> 2.4.4)
    actionpack (3.2.8)
      activemodel (= 3.2.8)
      activesupport (= 3.2.8)
      builder (~> 3.0.0)
      erubis (~> 2.7.0)
      journey (~> 1.0.4)
      rack (~> 1.4.0)
      rack-cache (~> 1.2)
      rack-test (~> 0.6.1)
      sprockets (~> 2.1.3)
    activemodel (3.2.8)
      activesupport (= 3.2.8)
      builder (~> 3.0.0)
    activerecord (3.2.8)
      activemodel (= 3.2.8)
      activesupport (= 3.2.8)
      arel (~> 3.0.2)
      tzinfo (~> 0.3.29)
    activeresource (3.2.8)
      activemodel (= 3.2.8)
      activesupport (= 3.2.8)
    activesupport (3.2.8)
      i18n (~> 0.6)
      multi_json (~> 1.0)
    addressable (2.2.8)
    arel (3.0.2)
    aws-sdk (1.5.2)
      httparty (~> 0.7)
      json (~> 1.4)
      nokogiri (>= 1.4.4)
      uuidtools (~> 2.1)
    bcrypt-ruby (3.0.1)
    builder (3.0.0)
    cocaine (0.2.1)
    coffee-rails (3.2.2)
      coffee-script (>= 2.2.0)
      railties (~> 3.2.0)
    coffee-script (2.2.0)
      coffee-script-source
      execjs
    coffee-script-source (1.3.3)
    devise (2.1.0)
      bcrypt-ruby (~> 3.0)
      orm_adapter (~> 0.0.7)
      railties (~> 3.1)
      warden (~> 1.1.1)
    devise_invitable (1.0.2)
      devise (>= 2.0.0)
      rails (~> 3.0)
    erubis (2.7.0)
    execjs (1.3.2)
      multi_json (~> 1.0)
    faker (1.0.1)
      i18n (~> 0.4)
    heroku (2.25.0)
      launchy (>= 0.3.2)
      netrc (~> 0.7.1)
      rest-client (~> 1.6.1)
      rubyzip
    hike (1.2.1)
    httparty (0.8.3)
      multi_json (~> 1.0)
      multi_xml
    i18n (0.6.0)
    journey (1.0.4)
    jquery-rails (2.0.2)
      railties (>= 3.2.0, < 5.0)
      thor (~> 0.14)
    json (1.7.5)
    launchy (2.1.0)
      addressable (~> 2.2.6)
    mail (2.4.4)
      i18n (>= 0.4.0)
      mime-types (~> 1.16)
      treetop (~> 1.4.8)
    mime-types (1.19)
    multi_json (1.3.6)
    multi_xml (0.5.1)
    mysql2 (0.3.11)
    netrc (0.7.1)
    nokogiri (1.5.2)
    orm_adapter (0.0.7)
    paperclip (2.7.0)
      activerecord (>= 2.3.0)
      activesupport (>= 2.3.2)
      cocaine (>= 0.0.2)
      mime-types
    pg (0.13.2)
    polyglot (0.3.3)
    rack (1.4.1)
    rack-cache (1.2)
      rack (>= 0.4)
    rack-ssl (1.3.2)
      rack
    rack-test (0.6.1)
      rack (>= 1.0)
    rails (3.2.8)
      actionmailer (= 3.2.8)
      actionpack (= 3.2.8)
      activerecord (= 3.2.8)
      activeresource (= 3.2.8)
      activesupport (= 3.2.8)
      bundler (~> 1.0)
      railties (= 3.2.8)
    railties (3.2.8)
      actionpack (= 3.2.8)
      activesupport (= 3.2.8)
      rack-ssl (~> 1.3.2)
      rake (>= 0.8.7)
      rdoc (~> 3.4)
      thor (>= 0.14.6, < 2.0)
    rake (0.9.2.2)
    rdoc (3.12)
      json (~> 1.4)
    redcarpet (1.17.2)
    rest-client (1.6.7)
      mime-types (>= 1.16)
    rubyzip (0.9.8)
    sass (3.1.18)
    sass-rails (3.2.5)
      railties (~> 3.2.0)
      sass (>= 3.1.10)
      tilt (~> 1.3)
    sequel (3.20.0)
    sinatra (1.0)
      rack (>= 1.0)
    sprockets (2.1.3)
      hike (~> 1.2)
      rack (~> 1.0)
      tilt (~> 1.1, != 1.3.0)
    sqlite3 (1.3.6)
    taps (0.3.24)
      rack (>= 1.0.1)
      rest-client (>= 1.4.0, < 1.7.0)
      sequel (~> 3.20.0)
      sinatra (~> 1.0.0)
    thor (0.16.0)
    tilt (1.3.3)
    treetop (1.4.10)
      polyglot
      polyglot (>= 0.3.1)
    tzinfo (0.3.33)
    uglifier (1.2.4)
      execjs (>= 0.3.0)
      multi_json (>= 1.0.2)
    uuidtools (2.1.2)
    warden (1.1.1)
      rack (>= 1.0)

PLATFORMS
  ruby

DEPENDENCIES
  aws-sdk
  coffee-rails (~> 3.2.1)
  devise
  devise_invitable
  faker
  heroku
  jquery-rails
  mysql2
  paperclip (~> 2.7)
  pg
  rails (= 3.2.8)
  redcarpet (= 1.17.2)
  sass-rails (~> 3.2.3)
  sqlite3
  taps
  uglifier (>= 1.0.3)
4

4 回答 4

2

您的问题可以通过 reload! 部分取消。在这里,您有一个不兼容的 gem(使用 rails 3.2)仅在 dev Env 中为修改后的类充电。你可能会找到一个等价物。或者让它兼容。

https://github.com/paneq/active_reload

你也可以结合重装!带警卫。 https://github.com/guard/guard

服务器启动时是否显示开发模式?(我猜你是在要求他以开发模式开始,但它真的以开发模式开始吗?)。

更新 :

关于rails 3.2(官方网站)的说明:

最引人注目的新功能是开发模式的速度提高了一吨半。受 Active Reload 的启发,我们现在只从您实际更改的文件中重新加载类。在更大的应用程序中,差异是巨大的。cf:http ://weblog.rubyonrails.org/2012/1/20/rails-3-2-0-faster-dev-mode-routing-explain-queries-tagged-logger-store/

因此,由于某种原因,rails 无法检测到文件系统上的更改。

更新 2:

检查您的源代码是否不在无效文件夹中(从 linux 的角度来看)。我的意思是如果 rails 使用相对路径(不确定),C:\invalid linux folder\something\rails\my_apps 可能会起作用。但是,如果导轨重新加载使用绝对路径,无论出于何种原因,你都被搞砸了。

于 2012-10-03T14:44:29.217 回答
2

如果不查看您的项目文件(尤其是 Gemfile、config/environments/development.rb、application.rb),很难提出明确的建议,但您始终可以生成全新的 rails 项目并在几分钟内将您当前的项目一一传输文件到最近创建的一个,以确定导致问题的确切 gem 或文件。在那之后它会更容易修复它,我希望。这是一种蛮力,但可以在击倒情况下提供帮助

于 2012-09-29T22:22:26.230 回答
1

比较你config/environments/development.rb和我的:

SampleApp::Application.configure do

  config.cache_classes = false
  config.whiny_nils = true
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false
  config.action_mailer.raise_delivery_errors = false
  config.action_mailer.delivery_method = :letter_opener
  config.active_support.deprecation = :log
  config.action_dispatch.best_standards_support = :builtin
  config.active_record.mass_assignment_sanitizer = :strict
  config.active_record.auto_explain_threshold_in_seconds = 0.5
  config.assets.compress = false
  config.assets.debug = true
  config.domain = '.lvh.me'
end
于 2012-10-02T17:52:03.877 回答
0

在 development.rb 上试试这个:

config.reload_classes_only_on_change = false

于 2013-10-14T19:37:32.053 回答