如何从 Rails 内部重新启动 Rails?

2024-03-02

好的,所以我想在 Rails 中创建一个操作来重新启动自身。我做了一些搜索并发现:

http://snippets.dzone.com/posts/show/5002 http://snippets.dzone.com/posts/show/5002

其中建议有 2 个命令,一个用于停止,另一个用于重新启动。以下杀戮:

ps -a|grep "/usr/local/bin/ruby script/server"|grep -v "grep /usr"|cut -d " " -f1|xargs -n 1 kill -KILL $1

-HUP 信号不会为我重新启动,所以我尝试修改上面的命令(进行调整,以便该命令与我在 Ubuntu 下启动服务器的方式正常工作):

ps -eaf|grep "ruby script/server"|grep -v grep|cut -d " " -f3|xargs -n 1 kill -KILL $1;script/server

这在我的环境中运行良好,因此我尝试设置一个操作来执行它:

def restart
  fork { exec "ps -eaf|grep \"ruby script/server\"|grep -v grep|cut -d \" \" -f3|xargs -n 1 kill -KILL $1;script/server" }
  redirect_to "/server_maintenance"
end

该操作很好地终止了服务器,但实际上并没有启动服务器备份:

=> Booting Mongrel
=> Rails 2.3.2 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/tcphack.rb:12:in `initialize_without_backlog': Address already in use - bind(2) (Errno::EADDRINUSE)
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/tcphack.rb:12:in `initialize'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:93:in `new'
    from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:93:in `initialize'
    from /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/mongrel.rb:10:in `new'
    from /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/mongrel.rb:10:in `run'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:111
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from script/server:3

我不太明白为什么当 Mongrel 似乎刚刚退出时该地址已经在使用中。

我发现这个问题:

如何在 Mongrel 下重新启动 Rails,而不停止和启动 Mongrel https://stackoverflow.com/questions/74218/how-do-you-restart-rails-under-mongrel-without-stopping-and-starting-mongrel

但这些信号不会导致我的环境中的重新启动,它们只是最终终止进程。

有人对可行的方法有什么想法吗?关于我的环境的一些说明:我从新版本的 RubyGems 和 Mongrel 安装了 Rails。我使用 script/server 来启动服务器,当然使用 Mongrel。我使用的是 Ubuntu Hardy Heron。


如果您不介意切换到 mod_rails,您可以通过创建 $RAILS_ROOT/tmp/restart.txt 来重新启动服务器,这只会导致您关心的 Rails 实例重新启动。

你的 PS 命令看起来(粗略地看)它会杀死你盒子上的所有 Rails 进程。如果你是一台机器上唯一的 Rails 应用程序,那没问题,但如果有几个应用程序以同一用户身份运行,或者你以 root 身份运行,你就会把它们全部杀死。形式不好!

This http://wiki.ocssolutions.com/Managing_Your_Mongrel为杂种指出这一点。有你想尝试的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Rails 内部重新启动 Rails? 的相关文章

  • Rails & Devise:如何在没有布局的情况下呈现登录页面?

    我知道这可能是一个简单的问题 但我仍在试图弄清楚Devise https github com plataformatec devise out 我想要render layout gt false在我的登录页面上 我怎样才能做到这一点Dev
  • 如何最好地将地址关联到 Rails 中的多个模型?

    这个问题 https stackoverflow com questions 648463 best way to model customer addresson SO 似乎与我的问题有关 但我不确定我的问题是否得到了回答 一个地址可以属
  • 如何在控制器中获取f.submit的名称参数?

    我创建了 form html erb 其中的编码如下 是的 我确实有两个相同表单的提交 并且它们都有 更新 和 销毁 等名称 当用户按下销毁按钮时 books controller 中的更新操作将被调用 并判断是 更新 还是 销
  • 如何让 Sublime Text 2 与 Ruby on Rails 配合使用?

    我是 Ruby on Rails 的新手 这是我到目前为止所做的 我已经安装了 XCode Homebrew RVM Ruby 和 Rails 现在如何让 Sublime Text 2 与 Ruby on Rails 一起使用 你应该做的第
  • Capistrano 部署擦除数据库?

    我已成功使用 Capistrano 将我的应用程序部署到生产环境 但我不明白如何处理我的数据库 我正在使用颠覆和乘客 当我运行 cap 部署时 新部署会重新启动一切 它会清除添加到数据库中的数据 显然 必须有一个解决方案 但我很惊讶没有在网
  • 使用 Ruby on Rails 索引多列

    我在 Mysql 数据库中有一个表 我想在其上使用多列索引 如何在不使用 mysql 控制台的情况下在 Rails 中执行此操作 在迁移定义中 您可以这样做 add index table name column1 column2
  • Ruby 中的 Splat 运算符(快速排序示例)

    你好 我正在研究一些 Ruby 代码 在 Ruby 中实现快速排序 1 def qsort lst 2 return if lst empty 3 x xs lst 4 less more xs partition y y lt x 5 q
  • rspec 用户测试给出“未定义的局部变量或方法‘confirmed_at’”

    我的 rspec 测试给了我 NameError undefined local variable or method confirmed at for
  • 如何为 MySQL 和 Postgres 编写不区分大小写的查询?

    我在本地运行 MySQL 数据库进行开发 但部署到使用 Postgres 的 Heroku Heroku 处理几乎所有事情 但我不区分大小写的 Like 语句变得区分大小写 我可以使用 iLike 语句 但我的本地 MySQL 数据库无法处
  • Rails 5 - 在 gem 上充当 Taggable - 简单表单集合选择已定义的标签列表

    我正在尝试学习如何将 Acts as Taggable On gem 与 Rails 5 一起使用 我使用简单的表格作为表格 我认为部分问题是由于提案和 randd fields 之间的模型没有关联而产生的 我有名为 Proposal 和
  • 载波无法删除图像

    我现在使用 Carrierwave 上传图像 一切都很好 除了一个 当我添加用于删除上传图像的复选框时 我收到错误 无法批量分配受保护的属性 remove image Form Model class Manufacturer lt Act
  • 什么时候需要将参数传递给“Thread.new”?

    在线程外部定义的局部变量似乎从内部可见 因此以下两种用法Thread new似乎是一样的 a foo Thread new puts a gt foo Thread new a a puts a gt foo The document ht
  • Rails API 设计无需禁用 CSRF 保护

    早在 2011 年 2 月 Rails 就改为需要 CSRF 令牌all non GET http weblog rubyonrails org 2011 2 8 csrf protection bypass in ruby on rail
  • Rails 急切加载计数?

    使用 include 属性可以很好地进行预加载 Post find all include gt author 我想知道您是否也可以急切加载计数 例如我是否想获取每个帖子的评论数量 而不加载所有评论本身 也许像 Post find all
  • 未签出...捆绑安装无法修复帮助!

    https github com intridea omniauth git at master is not checked out Please run bundle install Bundler GitError 那我该怎么办 捆绑
  • 默认更新嵌套属性

    我尝试更新 iProduction 这是生产中的嵌套表单 但此行出现参数错误 参数数量错误 0 代表 1 生产 update iproducts attributes cow id cow 我的创作动作制作 def create produ
  • 如何从 method_missing 获取绑定?

    我试图找到一种方法来从 Ruby 1 8 中的 method missing 中的调用者获取绑定 但我似乎找不到方法来做到这一点 希望下面的代码能解释我想做的事情 class A def some method x 123 nonexist
  • Rspec 控制器测试,传递 JSON 参数

    我试图实现以下目标 在 RSpec 控制器测试中创建 POST json 请求 并向其传递参数 这是我的代码 it returns access token do post login email bla password bla1 for
  • 有没有办法让 Ruby 临时文件永久存在?

    如果我通过创建了一个临时文件Tempfile 除了将其复制到另一个文件之外 还有什么方法可以使其 永久 吗 我想避免它在关联时被删除Tempfile实例被垃圾收集或进程被终止 在相关的一点上 有没有办法利用Tempfile机制 或使用类似的
  • 将 Twitter 引导样式添加到 Rails 表单助手

    在阅读建议我使用带有引导程序集成的 Simple form gem 的答案后 我安装了它并根据 simple form 说明创建了我的表单 但输入框向右浮动 这是布局 正在使用部分 shared reg 调用该表单 div class co

随机推荐

  • 如何查找在某个时候分配给您的问题?

    我们在项目中广泛使用 Jira 但我经常很难发现问题 我知道 我之前一直在解决这些问题 通常 如果报告了某些案例 这对我过去一直在做的事情来说似乎很熟悉 但我不记得具体是什么以及何时 通常 报告一个问题 然后我们的 scrum master
  • Jquery - 悬停时将图像高度和宽度扩展 20%

    晚上好 动态访问图像高度和宽度的最佳方法是什么 我想在图像宽度和高度上添加 20 并在周围的 div 悬停时设置动画 我想我需要使用 this 但不确定如何访问图像 非常感谢任何帮助 干杯保罗 你可以做这样的事情 使用 height htt
  • 防止导航栏右侧文本在导航栏中换行?

    In 这个 Bootply 示例 http www bootply com 133310 我该如何防止navbar right文本在移动视图中换行 我希望所有文本都保留在一行上 随着页面宽度的缩小而逐渐靠近 即 桌面视图中所见内容的压缩版本
  • 使用 Twitter API v2 方法时,Tweepy 不返回 url 媒体字段

    我请求 Twitter API v2 获取推文的详细信息并使用身份验证所需的客户端对象 import tweepy config client tweepy Client bearer token config BEARER TOKEN c
  • 使用 MVC 和 Razor 创建 object.cshtml 编辑器模板

    我希望为 Object cshtml 创建一个编辑器模板来更改 Html EditorForModel 方法的行为 我找不到任何使用 Razor 的示例 我见过这个例子 http bradwilson typepad com blog 20
  • Windows Azure 中的密钥管理

    我对如何在 Windows Azure 中存储密钥 用于数据加密 有点困惑 根据以下两个链接 1 http msdn microsoft com en us magazine ee291586 aspx 2 http blogs msdn
  • 使随机产生的数字更有可能

    我在用着x numpy random rand 1 生成一个 0 到 1 之间的随机数 我该如何做到这一点x gt 5的可能性是 2 倍x lt 5 这是一个合适的名字 只需对输入进行一些操作即可 第一组x在范围内0 to 1 5 x nu
  • 可以在Java中强制执行包依赖层次结构吗?

    基本上我有包 com me application com me application thing com me library 我想执行以下规则 com me application可以包括com me library 除了com me
  • jsdoc二维数组

    我有一个字符串数组的数组 但我不知道如何使用 JSDoc 来记录它 class function PostbackList type int default this TypeID 0 type PostbackList Field thi
  • Tomcat 7 SSL 失败

    我使用 Tomcat 7 并将启用 SSL 连接器 实际上我已经将此解决方案编辑为server xml file
  • QtRuby 可以与 Qt 5 一起使用吗?

    我可以在网上找到的所有内容QtRuby https duckduckgo com q ruby and qt使用 Qt 4 但当前的 Qt 版本是 5 这是否只是文档跟不上现实的问题 Qt 5 可以与 QtRuby 一起正常工作 如果您断言
  • Windows Phone 运行时没有页面转换

    我正在尝试禁用 Windows Phone 运行时的默认页面导航动画 我所能实现的就是将其更改为连续体 十字转门或幻灯片 但我希望页面能够立即更改 因此 当我调用 this Frame navigate 时 它应该导航到新页面 而无需任何动
  • 从 Windows 上下文菜单接收参数

    我以前做过这个 但我一生都不记得该怎么做 在我的资源管理器上下文菜单中 我添加了一个新条目 转到 regedit 转到 HKEY CLASSES ROOT bla bla bla 现在 当我单击我的选项时 我想传递文件路径 文件名等我的应用
  • 如何从服务 C# 捕获控制台输出?

    我们有一个部署到远程客户系统的 C 服务 应用程序将大量 诊断 信息写入控制台 即 Console WriteLine 该服务没有 做它应该做的事 我们如何捕获另一个应用程序中服务的控制台输出 WinForm 版本的应用程序可以在客户位置加
  • Gradle Jacoco 和 JUnit5

    我们刚刚将单元测试移植到 JUnit5 意识到这仍然是相当早期的采用 谷歌上几乎没有任何提示 最具挑战性的是为我们在 jenkins 上使用的 Junit5 测试获取 jacoco 代码覆盖率 因为这花了我几乎一天的时间才弄清楚 所以我想我
  • 注册为 Spring bean 时过滤器调用两次

    我想用 Autowire with a Filter 所以我在中定义我的过滤器SecurityConfig如下 Override protected void configure HttpSecurity http throws Excep
  • 如何在页面之间共享信息

    在开始之前 正如标题中所述 我正在学习 NET MAUI 而且我对此还很陌生 我的问题是我找不到从一个页面到上一个页面共享信息的方法 我想做的是 在 MainPage 中 有一个按钮 按下后会将用户发送到另一个页面 我们将其称为 Login
  • :为什么我无法设置Xamarin.Forms.ListView的SelectedItem属性?

    object lastItem null foreach object item in listView ItemsSource lastItem item if lastItem null listView SelectedItem la
  • 获取文件的最后修改日期/时间作为本地日期/时间字符串

    new File url lastModified 返回一个long等于自纪元以来的毫秒数 基于 GMT 将其转换为一个简单的方法是什么String代表系统本地日期 时间 如果你真的需要看到我的尝试 那就是 但这是一团糟 而且无论如何都是错
  • 如何从 Rails 内部重新启动 Rails?

    好的 所以我想在 Rails 中创建一个操作来重新启动自身 我做了一些搜索并发现 http snippets dzone com posts show 5002 http snippets dzone com posts show 5002