问题标签 [mod-rails]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 如何在没有符号链接的情况下在一个域上部署多个 Rails 应用程序
根据乘客文档,可以通过设置一个中央 Rails 应用程序在一个域上部署多个 Rails 应用程序,然后通过在该应用程序的公共目录中创建符号链接来链接其他应用程序(并告诉网络服务器)。
这实际上非常混乱。有没有办法仅通过网络服务器配置来实现此行为?我正在使用 apache2 和 mod_rails。
我想要的是以下内容:
myapp.subdomain.domain.tld myapp.subdomain.domain.tld/staging myapp.subdomain.domain.tld/development
其中每个 URL 指向不同的 rails 项目,该项目位于服务器上的以下目录中:
/var/www/myapp/production/current/public /var/www/myapp/staging/current/public /var/www/myapp/development/current/public
在这种情况下,我需要将符号链接放在生产文件夹的公用文件夹中,这不是我想要的(感觉很脏)。甚至这些项目以后可能会驻留在不同的服务器上。
ruby-on-rails - Ruby on Rails 和标准 mod_rewrite
我有一个用 PHP 编写的旧应用程序,现在我用新的 RoR 应用程序替换它。旧应用程序具有“this-is-seo-title,n123.html”之类的链接。在 htaccess 中有一条规则将这些链接转换为 news.php?id=123。
现在,当我设置 RoR 应用程序时,链接采用“RoR 方式”(:controller/:action/:id)。它既酷又好,但在 Google 中,我有大约 50k 个索引子页面。我不想让这个索引子页面被破坏所以现在这里有一个问题:
我可以在 htaccess 文件中创建将“this-is-seo-title,n123.html”链接翻译到 /news/123 的新规则吗?
我还没有部署应用程序,也无法访问带有乘客模块的环境,所以我无法自己测试它。
ruby-on-rails - 乘客不能使用 .htaccess 文件中的重写规则吗?
我有一个仅在虚拟主机上下文中有效的重写规则。
如果我PassengerEnabled off
在 .htaccess 文件中设置,重写规则可以正常工作,否则它们只能在<VirtualHost>
站点配置中工作。
有没有办法让乘客在 .htaccess 文件中使用重写规则?
ruby-on-rails - RoR 3、Passenger、Relative URLs 和 helper 方法,例如 root_url
我真的很难理解我在 Rails 3 应用程序中看到的路由行为,因为它与乘客和路由辅助方法有关。这是一个快速概述:
当用户注册我的网站时,我想做的一件事是发送一封验证电子邮件,以确保用户提交了有效的电子邮件地址。因此,我设置邮件程序向用户发送带有某种魔法令牌的 URL,从而证明他们已经收到了我发送的电子邮件。电子邮件正文中的 URL 是通过路由辅助方法(在本例中为verify_url("a1b2c3")
)生成的,并且 URL 被适当地填充到电子邮件中,如下所示:
这一切都很localhost:3000
顺利。因此,就像一个负责任的开发人员一样,我接下来要做的就是将我的应用程序移至我的远程 QA 环境并验证一切是否仍然有效。我的托管服务提供商使用Passenger,我对其进行了设置,以便可以按如下方式访问我的QA环境:
这是通过/qa
在适当的.htaccess
文件中设置 RailsBaseURI 来完成的。因此,我正在尝试在我的 QA 环境中注册该站点,并且我希望辅助方法verify_url
生成以下 URL:
但是,这是我得到的:
注意到明显缺乏对“qa”路径的引用吗?我搜索了各种博客和手册来寻找答案,我看到了以下建议:
- 设置环境变量,例如
ENV['RAILS_RELATIVE_URL_ROOT']
- 设置
ActionController::Base.relative_url_root
在我的environment/qa.rb
- 向我添加地图以
config.ru
在特定路径下初始化我的应用程序 - 将我的路线包装在一个范围内
然而,这些似乎要么被弃用(前两个选项),要么最终产生冗余路径信息(后两个选项),如下所示:
谁能告诉我设置它的正确方法,这样当我打电话时verify_url("a1b2c3")
,我实际上得到了正确的 URL,包括我的 QA 环境的相对路径?理想情况下,我希望能够以environments/qa.rb
某种方式设置它,这样当从一个环境移动到另一个环境时,我根本不需要更改我的应用程序。
提前致谢!
ruby-on-rails - apache 上的 phusion 乘客 mod_rails 挂起
我运行 Apache 2.2.3 和乘客 3.0.7(在史前 SLES11 linux 上)。当请求通过乘客时,它会产生应用程序进程,但随后会永远挂起,就好像没有应用程序可以启动一样。
我使用简单的 hello world rack 应用程序以及新创建的 rails 3 应用程序框架进行了测试。这些应用程序在 webrick 上以生产模式出现,因此没有应用程序内部问题。
我检查了权限,全部归 apache 用户所有。
乘客记录到它产生了进程的 apache,但请求 url 甚至没有进入 apache 的访问日志,并且应用程序日志也是空的。乘客说跟踪显示应用程序在启动期间冻结,但我什至没有发现它们到达 config.ru 的痕迹。这一切都向我表明,挂起的是乘客生成器。
这太神秘了,不会是因为一些奇怪的apache配置导致生成的进程没有获取资源吗?
这会给任何人敲响警钟吗?所有帮助或调试提示都表示赞赏
我在 phusion google group 上提出了这个问题,但没有找到解决办法。 https://groups.google.com/forum/#!topic/phusion-passenger/GlQIBNTyF6A
维克
ruby-on-rails - 有没有一种简单的方法可以在乘客的请求周期之外运行垃圾收集?
Unicorn 具有OobGC机架中间件,可用于GC.start
在一定数量的请求后运行。
Phusion Passenger 中是否有类似的东西?
ruby-on-rails - Apache2 的 Rails 乘客问题
我正在尝试使用 apache2 和 mod_rails(Phusion Passenger)在 ubuntu10.10 上的 rails 服务器上设置一个 ruby。
我已经安装了 ruby 1.9.2-p0 和 rails 3.0.8 并安装了带有 Passenger-install-apache2-module 和乘客 gem (v3.0.7) 的乘客。
然后它告诉我在我的 Apache 配置文件中添加 3 行。所以我将这些行添加到'/etc/apache2/apache2.conf':
我编辑了我的“/etc/apache2/httpd.conf”并添加了:
我还发现/usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/中的文件mod_passenger.so实际上是不存在的,它的名字是mod_passenger.c。但我没有从中得到任何错误。
服务器应该只能通过 LAN 访问。当我访问服务器时,我看到我的应用程序公用文件夹中的所有文件和目录,但应用程序本身没有启动。
当我重新启动 apache 时,它告诉我 mod_rails 已经加载,所以我猜乘客正在运行,但我不知道为什么它没有启动我的应用程序!
提前致谢!
ruby-on-rails - 在 Aptana Studio 3 中远程调试 Rails 应用程序
我的 Rails 开发 IDE 是Aptana Studio 3.0.5,在 Windows 上运行。这些应用程序在单独的 CentOS Linux 机器上运行在 Apache + ModRails (Phusion Passenger) 上。我有 Rails 2.x 和 3.x 应用程序。
我希望能够在 Aptana Studio 中使用调试器(远程连接到正在运行的应用程序)。显然有一些规定,但我无法弄清楚我在服务器端需要什么(在我的 Rails 应用程序配置中)
我试过这个:
使用 Rack::Debug:它只创建 unix 套接字,不能远程连接。
直接使用 ruby-debug:
我将此添加到我的
/config/environments/development.rb
:
用语句喷洒我的代码debugger
会停止执行,但我无法从 Aptana 连接到此实例,不能连接到端口 5000 和端口 5001(我不明白为什么我需要两个端口)。
此外,即使有效,这种方法也会相当缓慢且过于复杂,我希望进行更“集成”的调试。有可能吗?
ruby-on-rails - Fedora 启动时使用Passenger/mod_rails 成功启动Apache
前提和目的
在 Fedora 12 启动 Apache 时,有一个关于 Passenger/mod_rails failed to initialize 的线程。底线,问题是由于权限,您可以通过调用来避免这种情况
跑步前
并打电话
之后将其设置回来。它很酷,但我希望在 Fedora 重新启动时自动运行序列。
问题
我查看/etc/init.d/httpd
并发现它只是重定向到etc/rc.d/init.d/functions
,关键调用是
所以,我认为简单地用这样的调用来包围这个调用setenforce
就可以了。
但它不起作用。它会发出这样的新错误(在 httpd 错误日志中):
当我省略最后一个setenforce 1
时,它终于起作用了!但显然我想把它放回某个地方。
问题
如何挂钩这些setenforce 0
并setenforce 1
调用启动序列httpd
?我觉得最合适的方法是编写自己/etc/init.d/httpd
不使用的脚本systemctl
,但我想避免这种情况,因为它看起来像一条荆棘之路......但如果我错了,如果你能建议简单的写作方式我自己的etc/init.d/httpd
脚本,我也会很感激。
ruby-on-rails - 乘客和 Apache 的“出了点问题”错误,在 WEBRick 中工作
我正在使用乘客和 Rails 运行 Apache2。我可以使用“rails s -e production”运行我的网络应用程序,但Passenger 不会运行该应用程序。它只是给出 500 错误。日志给了我整个预编译错误,但是将配置更改为预编译或 'rake assets:precompile:all' 什么都不做。我正在使用现有的 SQL 数据库,它有时在 Apache 后面运行时也会出现未找到表的错误,但在 WEBRick 中工作得很好。我有一个“RailsEnv 生产”指令也没有做任何事情。我不明白为什么它不能与Passenger 一起使用,而是与WEBRick 一起使用,尤其是当我之前让它与Apache 一起使用时,然后只是将应用程序重新部署到不同的目录中并遇到了这些问题。还有一个缓存:获取未命中错误,但我相信我解决了它,但我的应用程序仍然无法运行。昨天和今天我整天都在研究它,但仍然无法让应用程序与 Apache 一起运行。已经尝试过权限,已经尝试过重新安装,已经尝试过 db:migrate,已经尝试过一切。有谁知道它为什么失败?