需要重启 Puma 以反映视图的变化?
Posted
技术标签:
【中文标题】需要重启 Puma 以反映视图的变化?【英文标题】:Need to restart Puma to reflect changes in view? 【发布时间】:2015-11-06 06:42:16 【问题描述】:我刚刚对我新部署的 Rails 4 应用程序进行了一些新的更改。更准确地说是视图文件中的一些更改。
令我沮丧的是,在推送更改后,网站仍然显示相同的旧视图。查了好久,终于明白解决问题的关键是:
sudo restart puma-manager
现在,这是正常的做法吗?每次推送更改时重新启动服务器?还是我对 Puma 的配置不当?
谁能告诉我是否可以做些什么来改善这种情况?
【问题讨论】:
是的,每次推送我还需要重启服务器才能看到变化。如果你使用 Capistrano,还有人写 puma restart task。 【参考方案1】:Rails 中的自动更新代码在机架中间件 ActionDispatch::Reloader
下工作。
默认情况下,
ActionDispatch::Reloader
包含在中间件中 仅在开发环境中堆栈。
当请求到达服务器时。中间件ActionDispatch::Reloader
启动,并执行插入的回调。
例如:
=> bundle exec rake middleware RAILS_ENV=development
use Rack::Sendfile
use ActionDispatch::Static
use Rack::Lock
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x00000004b662b0>
use Rack::Runtime
use Rack::MethodOverride
use ActionDispatch::RequestId
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use ActionDispatch::DebugExceptions
use Rollbar::Middleware::Rails::RollbarMiddleware
use ActionDispatch::RemoteIp
use ActionDispatch::Reloader #< -- here reloader!
use ActionDispatch::Callbacks
use ActiveRecord::Migration::CheckPending
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActionDispatch::Cookies
use ActionDispatch::Session::CookieStore
use ActionDispatch::Flash
use ActionDispatch::ParamsParser
use Rack::Head
use Rack::ConditionalGet
use Rack::ETag
use Warden::Manager
run MyApp::Application.routes
在production
中没有ActionDispatch::Reloader
:
=> bundle exec rake middleware RAILS_ENV=production
use Rack::Sendfile
use ActionDispatch::Static
use Rack::Lock
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x00000004092e60>
use Rack::Runtime
use Rack::MethodOverride
use ActionDispatch::RequestId
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use ActionDispatch::DebugExceptions
use Rollbar::Middleware::Rails::RollbarMiddleware
use ActionDispatch::RemoteIp
use ActionDispatch::Callbacks
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActionDispatch::Cookies
use ActionDispatch::Session::CookieStore
use ActionDispatch::Flash
use ActionDispatch::ParamsParser
use Rack::Head
use Rack::ConditionalGet
use Rack::ETag
use Warden::Manager
run MyApp::Application.routes
【讨论】:
对不起,我没听懂你回答中的一半……我不熟悉“机架中间件”之类的术语。你能解释一下吗? 看好What is Rack middleware?
Rails 使用机架堆栈构建。 Rails 只不过是几个机架而已。
好的,我想我现在已经明白为什么它可以正常工作了。那很有启发性。谢谢。但是有什么办法可以改变吗?
你能澄清一下改变这个吗?以上是关于需要重启 Puma 以反映视图的变化?的主要内容,如果未能解决你的问题,请参考以下文章
Capistrano在升级ruby版本和puma时重启错误版本的puma