Rails 5.1开发环境自定义目录文件无法自动重载的解决咨询
解决Rails 5.1自定义目录文件修改后无需重启服务器的问题
我太懂每次改完自定义目录下的服务文件都要重启服务器的烦躁了,这就给你说怎么彻底搞定它:
第一步:确认自定义目录已加入自动加载路径
你已经在config/application.rb里加了识别目录的代码,不过要确保是递归包含子目录的写法,这样所有子目录里的文件都能被Rails正确找到:
# config/application.rb module YourAppName class Application < Rails::Application # 其他配置代码... # 把你的自定义目录(比如叫services)和所有子目录加入自动加载路径 config.autoload_paths += Dir[Rails.root.join('services', '**')] # 替换成你实际的目录名,比如如果是custom_dir就写'custom_dir' end end
第二步:让开发环境监视自定义目录的文件变化
Rails开发环境默认只盯着app目录下的文件,所以得手动告诉它要监视你的自定义目录。打开config/environments/development.rb,添加下面的配置:
# config/environments/development.rb Rails.application.configure do # 其他开发环境配置... # 添加自定义目录到监视列表,指定只监视.rb文件 config.watchable_dirs[Rails.root.join('services')] = [:rb] # 同样替换成你的实际目录名 end
第三步:重启Spring(可选但推荐)
如果你的Rails项目用了Spring预加载器(默认是启用的),它可能还没识别到新的监视目录,所以先停掉Spring再重启服务器:
spring stop rails s
做完这些之后,你再修改自定义目录及其子目录下的create_comments_service.rb或其他.rb文件,开发服务器就会自动检测到变化并重新加载,再也不用手动重启啦!
内容的提问来源于stack exchange,提问作者Augusto Carmo
相关产品推荐
相关产品推荐

