问题标签 [jrubyonrails]

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.

0 投票
1 回答
283 浏览

ruby-on-rails - jRuby/Glassfish 无法识别已安装的 gem(Rails 应用程序)

当我尝试使用 jRuby 启动我的 Rails 应用程序时,它说我需要安装已经安装的 rails 2.3.8。这些是我使用的命令及其错误:

尝试启动应用程序:

[root@node app]# /opt/jruby-1.5.2/bin/jruby -S /opt/jruby-1.5.2/bin/glassfish -p 3001
在开发环境中启动 GlassFish 服务器:0.0.0.0:3001。 ..
将日志消息写入:/opt/app/log/development.log。
按 Ctrl+C 停止。

缺少 Rails 2.3.8 gem。请gem install -v=2.3.8 rails为您已安装的 Rails 版本更新 config/environment.rb 中的 RAILS_GEM_VERSION 设置,或注释掉 RAILS_GEM_VERSION 以使用已安装的最新版本。

本地宝石:

[root@node app]# /opt/jruby-1.5.2/bin/jruby -S gem list

其他相关信息:

0 投票
2 回答
2839 浏览

log4j - 在 tomcat jruby-rack 上使用 log4j 记录 Rails 3 应用程序

我刚刚花了 3 个小时的大部分时间试图让我的 Rails 应用程序使用 Log4j 进行日志记录。我终于让它工作了,但我不确定我所做的是否正确。直到最后一次尝试,我尝试了各种方法都无济于事。所以我真的在这里寻找一些验证,也许还有一些指示和提示——老实说,任何事情都会受到赞赏。我将我所有的弱方法总结为以下三种尝试。我希望能对我每次尝试出错的地方有所启发——即使这意味着我被撕毁了。

我在这里先向您的帮助表示感谢!

系统规格

  • 导轨 3.0
  • 视窗服务器 2008
  • 日志4j 1.2
  • Tomact 6.0.29
  • 爪哇 6

尝试 1 - 将 Tomcat 配置为使用 Log4J

我基本上遵循了 Apache Tomcat 网站上的指南。步骤是:

  1. 在中创建log4j.properties文件$CATALINA_HOME/lib
  2. 下载并复制log4j-x.y.z.jar$CATALINA_HOME/lib
  3. 替换$CATALINA_HOME/bin/tomcat-juli.jartomcat-juli.jarApache Tomcat Extras 文件夹中的
  4. 从 Apache Tomcat Extras 文件夹复制tomcat-juli-adapters.jar$CATALINA_HOME/lib
  5. 删除$CATALINA_BASE/conf/logging.properties
  6. 启动 Tomcat(作为服务)

根据指南的预期结果

我应该tomcat.log在我的$CATALINA_BASE/logs文件夹中看到一个文件。

实际结果

  • 没有tomcat.log
  • 而是看到了三个标准日志
    • jakarta_service_20101231.log
    • stderr_20101231.log
    • stdout_20101231.log

问题

  • 我不应该至少看过一个tomcat.log文件吗?

尝试 2 - 使用默认 Tomcat 日志记录 (commons-logging)

  1. 还原了之前设置的所有更改
  2. $CATALINA_BASE/conf/logging.properties通过执行以下操作进行修改:

    1. 在行中为我的应用程序添加设置handlers5rails3.org.apache.juli.FileHandler
    2. 添加处理程序特定属性

      /li>
    3. 添加设施特定属性

      /li>
  3. 通过根据 jruby-rack README 的 Logging 部分添加以下上下文参数来修改web.xml我的(我也相应地修改了我的 warbler.rb,但我选择web.xml直接更改以更快地测试事物)。

    /li>
  4. 重新启动Tomcat

结果

  • 已创建日志文件 ( rails3.log),但文件中没有日志信息。

尝试 2A - 将 Log4j 与现有设置一起使用

web.xml我决定用这个新设置再试一次 Log4j 。

  1. 复制log4j.jar到我的WEB-INF/lib文件夹
  2. 创建一个log4j.properties文件并将其放入WEB-INF/classes

    /li>
  3. 重新启动Tomcat

结果

与尝试 2 相同

注意:我之所以使用log4j.logger.javax.servlet=DEBUG,是因为我在 jruby-rack README 中读到所有日志记录输出都会自动重定向到该javax.servlet.ServletContext#log方法。所以我认为这会捕捉到它,但我显然错了。

问题

  1. 为什么这不起作用?
  2. Log4J 不使用commons_loggingAPI 吗?

尝试 3 - 试用 slf4j(已工作)

有点不确定为什么尝试 2A 不起作用,我心想,也许我不能commons_logging用于jruby.rack.logging参数,因为它可能没有使用commons_loggingAPI ......(但我仍然不确定)。我认为slf4j这是一种选择。我从来没有听说过它,出于好奇,我决定查一下。在简要阅读了它之后,我认为它和任何一个镜头一样好,并决定按照这里的说明进行尝试。

继续尝试 2A 的设置:

  1. 复制slf4j-api-1.6.1.jarslf4j-simple-1.6.1.jar我的WEB-INF/lib文件夹
  2. 我也复制slf4j-log4j12-1.6.1.jar到我的WEB-INF/lib文件夹中
  3. 重新启动Tomcat

还有维奥拉!我现在有日志信息进入我的rails3.log文件。

所以最大的问题是:

怎么回事?

尽管现在日志记录似乎正在工作,但我真的不确定我所做的是否正确。所以就像我之前说的,我真的或多或少地在寻找一些验证。如果您有任何指示/提示/建议,我也将不胜感激。谢谢!

0 投票
3 回答
2392 浏览

ruby-on-rails - 使用 jmeter 进行 Rails 应用程序负载测试

我正在尝试使用 jmeter 加载测试 rails 应用程序,但尚未通过登录。

在 application_controller 中,我注释掉了protect_from_forgery,以便不必使用authenticity_token。

现在看起来来自 idex/主页响应的应用程序会话 id cookie 没有被 jmeter 的 http cookie 管理器保存,或者 cookie 被 jmeter cookie 管理器保存并且没有在请求中传递。

这是我在 jmeter 的帖子从 tomcat 访问日志中的样子:

192.168.247.13 [07/Jan/2011:11:01:27 -0500] r:200 d:58 'POST /dash/account/login HTTP/1.1' 2088

这是从浏览器 (Chrome) 登录的帖子的样子:

192.168.247.13 [07/Jan/2011:10:56:51 -0500] r:200 d:112 'POST /dash/account/login HTTP/1.1' 16

出于某种原因,来自浏览器的帖子可以正常工作并重定向到下一页。JMeter 的帖子返回视图 (login.erb) 而不是重定向。cookie 管理器未保存会话 cookie 或会话 cookie 未在 jmeter 的请求中发送的另一个指示。

有人用 jmeter 和 rails 应用程序遇到过这个问题吗?有什么建议么?

提前致谢。

0 投票
2 回答
305 浏览

ruby-on-rails - Tomcat 内存分析器

有人可以推荐一个好的tomcat内存分析器吗?(我正在尝试分析部署在 Windows 机器中的 Tomcat 实例上的 JRuby on Rails 应用程序的内存使用情况)。

0 投票
1 回答
274 浏览

ruby-on-rails - Linux Cron Job 或 Rails 的任何作业调度程序。哪个更适合自动化部署?

我想知道哪个选项更好,为什么?
* Linux Cron Job
* rails 的后台作业调度程序。(什么插件可以帮助我这是另一个问题!)

我们的应用程序使用的一些 cron 作业如下:
-> 每周 1 个作业来清理应用服务器中的临时目录
-> 4 个作业在相互依赖的应用程序之间同步数据

某些同步作业需要的时间不确定,具体取决于数据负载 - 有时需要一分钟,有时需要 2 分钟,有时需要 5 分钟,等等

仅供参考 - 以上所有工作目前都作为 Cron 工作存在。

有了上述限制,当我们打算进行自动化部署时,运行后台作业的最佳方法是什么?

0 投票
3 回答
5179 浏览

ruby-on-rails - 环境变量或 YAML 配置文件

背景:
第 1 步 -> 我们有一个盒子,它通过在具有特定配置的测试模式下运行应用程序来运行应用程序的单元和功能测试。
第 2 步 -> 第 1 步成功后,我们通过在另一个框中以不同配置集在测试模式下运行应用程序来运行应用程序的集成测试。
第 3 步 -> 第 2 步成功后,我们通过在性能测试框中以生产模式运行应用程序来运行应用程序的性能测试。
第 4 步 -> 第 3 步成功后,构建被认为是稳定的,并且 UAT 框会使用该代码库进行更新,并且应用程序在生产模式下运行,以供客户审查和反馈。第 5 步 -> 使用客户的 GO,使用代码库更新生产框。

现在,从上述步骤我们观察到,在步骤 1 和 2 中,当应用程序在测试模式下运行时,它具有不同的配置。步骤 3,4 和 5 的情况类似。

在这种情况下,推荐的做法是什么?我们有 YAML 配置文件,但我个人觉得维护大量配置文件没有意义。于是,我从
“每个环境的配置文件”
的做法变成 了
“每个rails模式的配置文件,将变量外部化到linux环境”的做法。

我在正确的轨道上吗?我的行动难道不是简化事情吗?

这两种方法的优缺点是什么?

0 投票
2 回答
724 浏览

ruby-on-rails - 数据库迁移和回调 [JRuby 1.5.2 或 Rails 2.2.3]

背景
我们有一个如下的rails迁移脚本:
...
...
0011_update_column1_for_internal_projects.rb
...
...
0022_create_audits.rb

我们为 InternalProject 模型创建了 after_create/update/delete 回调,更新 Audits 表以跟踪模型上发生的事件。

代码片段
DB 迁移脚本 - 0011 - 的self.up方法定义如下:

副作用
使用 0022 脚本时,我们遇到了脚本 0011 无法迁移的情况,因为我们有测试夹具来为内部项目加载一些种子数据。现在这个失败了,因为在保存 InternalProject 时回调被触发,并且在 DB 状态的那一刻,因为 0022 没有运行,审计表不存在,所以我们得到一个 SQL 错误,感叹该表不存在.

我的问题
1. 如何修复 0011 DB 迁移脚本,以防止在保存 InternalProject 时调用回调?我想知道这样做的巧妙方法
2.让我怀疑这样的更新脚本是否会被删除。这是个坏主意吗?我们是否应该在数据库迁移中拥有用于数据操作的脚本?
3. DB迁移脚本应该有数据操作脚本,我们可以做些什么吗?

0 投票
1 回答
468 浏览

jruby - 使用warbler将Rails应用程序部署到tomcat时出现问题-未定义的方法'getProperty'

我正在尝试将我们的应用程序部署到 hardy 上的独立 tomcat 5.5。

生成的war文件已解压缩(看起来正确)但不会加载并给我以下错误:

我使用的版本:

在服务器上:

提前感谢您的帮助!克里斯

0 投票
5 回答
3210 浏览

windows - Vagrant 无法识别 x64-Windows7 上的 VirtualBox(已经在运行 JRuby)

我正在尝试让 Vagrant 在 64 位 Windows 7 机器上运行,但我不断收到错误消息“Vagrant 无法检测到 VirtualBox!” 这是我安装的:

  • JRE 6.0.230.25 x64
  • JRuby 1.6.0.0
  • 红宝石 1.8.7.330 (Windows)
  • 虚拟盒子 3.2.12
  • 当前版本的 Vagrant(截至 2011 年 1 月 18 日)

每次尝试命令时,我都会遇到相同的错误,例如

现在我有点不知所措了。有什么建议么?

(而且我在为此苦苦挣扎了一段时间后才安装了 Windows 版本的 Ruby。我不知道在同一台机器上安装 JRuby 和 Ruby 是否可能导致其他冲突,但我一直在我安装它之前和之后出现这个错误。)

提前感谢您的帮助。

0 投票
1 回答
463 浏览

jruby - 在tomcat中的jruby/rack中使用jruby时如何/在哪里为jruby设置--fast模式?

在tomcat中的jruby/rack中使用jruby时如何/在哪里为jruby设置--fast模式?

这个--fast模式在这个页面 jruby性能调优中解释