小编Pet*_*noy的帖子

Phusion passenger-status:passenger_instance_registry_dir的值是多少?

我已经从源代码在Ubuntu 14.04上完成了新的nginx 1.6.3和乘客5.0.15的安装,以便在我的一台服务器上为我的ROR 4.2应用程序添加来自AppNeta的跟踪组件.Nginx和乘客正在运行并提供页面服务.我正在获取服务器监控的跟踪数据.一切似乎都很好,

但是,当我运行"乘客身份"(作为root)时,我得到以下内容:

错误:Phusion Passenger似乎没有运行.如果您确定它正在运行,那么此问题的原因可能是:

  1. 您使用Apache的PassengerInstanceRegistryDir选项,Nginx的passenger_instance_registry_dir选项或Phusion Passenger Standalone的--instance-registry-dir命令行参数自定义了实例注册表目录.如果是,请将环境变量PASSENGER_INSTANCE_REGISTRY_DIR设置为该目录并再次运行乘客状态.
  2. 实例目录已被操作系统后台服务删除.请使用Apache的PassengerInstanceRegistryDir选项,Nginx的passenger_instance_registry_dir选项或Phusion Passenger Standalone的--instance-registry-dir命令行参数设置不同的实例注册表目录.

这个问题是它似乎阻止了capistrano部署; 在退出之前通过上限显示相同的错误.

乘客正在运行(它在ps输出中并且正在提供页面).我只需要告诉乘客状态在哪里找到当前正在运行的实例.(这来自设计和体系结构文档.)因此,似乎设置此实例注册表目录值是必需的步骤.但到了什么价值?

根据Nginx参考,默认值是/tmp/var/run/passenger-instreg 我在/ tmp中找到了一个实例目录.所以,我尝试将PASSENGER_INSTANCE_REGISTRY_DIR设置为许多不同的值:

  • / tmp目录
  • /tmp/passenger.JxmCeiA(当前实例目录,但每次启动Nginx时都会更改)

我甚至尝试在/ run/passenger创建一个目录,在nginx配置文件中设置该值并重新启动nginx.临时目录创建的,但乘客状态仍然给出了同样的消息.即使我使用/opt/passenger-5.0.15/bin/passenger-status脚本来确保我使用该脚本的最新版本.

对于乘客,原始"location.ini"目录中有一些配置值,但没有一个是实例注册表目录,因此无需重用.

有趣的是,/ opt /passenger-5.0.15/lib/php_passenger/nginx/config_options.rb文件没有passenger_instance_registory_dir的条目.它有其他nginx配置选项,我本来期望它也有这个.

我已经尝试设置环境变量以及Nginx passenger_instance_registry_dir选项,但我必须在我的理解中遗漏一些东西,因为我似乎无法将passenger-status命令与当前运行的实例连接.

任何帮助将不胜感激.

ruby-on-rails passenger nginx ubuntu-14.04

14
推荐指数
3
解决办法
2万
查看次数

为库模块添加rspec测试似乎并没有提升Expectations和Matchers

我正在为我的应用添加更多的rspec测试,并希望测试一个ScoringMethods模块,它位于/lib/scoring_methods.rb中.所以我添加了一个/ spec/lib目录并在那里添加了scoring_methods_spec.rb.我需要spec_helper并设置describe块,如下所示:

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

describe ScoringMethods do

  describe "should have scorePublicContest method" do
    methods = ScoringMethods.instance_methods
    methods[0].should match(/scorePublicContest/)
  end
end
Run Code Online (Sandbox Code Playgroud)

现在methods[0]是一个String,并且公共方法名称与正则表达式匹配没有问题.而"spec_helper"的相对路径是正确的.

问题是整个设置似乎没有使用rspec库.运行示例产生:

  ./spec/lib/scoring_methods_spec.rb:7: undefined method `match' for Spec::Rails::Example::RailsExampleGroup::Subclass_1::Subclass_1:Class (NoMethodError)
     ...
Run Code Online (Sandbox Code Playgroud)

似乎缺少整个期望和匹配支持.为了测试我的假设,我通过将"is_instance_of"替换为"is_foobar_of"来更改了工作助手规范.该测试完全失败,并说"is_foobar_of"不是目标对象的方法; 它,整个Spec :: Rails :: Example ...层次结构不存在.

我也尝试过使用其他匹配器.我试过"be_instance_of"和其他一些人.好像我没有正确地包含rspec库.

最后,ScoringMethods是一个模块,就像Helpers是模块一样.所以我认为可以测试一个模块(而不是像控制器和模型这样的类).

我非常感谢你对我做错了什么的想法.也许有更有效的方法来测试库模块?谢谢!

testing rspec ruby-on-rails

11
推荐指数
1
解决办法
6612
查看次数

Ruby BigDecimal Round:这是一个错误吗?

在编写一个带有表示为BigDecimal的值的测试时,我遇到了一些奇怪的东西并决定深入研究它.简而言之,当舍入到两位小数时,'0.00009'将返回0.01而不是0.00.真.这是我的脚本/控制台捕获:

>> bp = BigDecimal('0.09')
=> #<BigDecimal:210fe08,'0.9E-1',4(8)>
>> bp.round(2,BigDecimal::ROUND_HALF_DOWN).to_f
=> 0.09
>> bp = BigDecimal('0.009')
=> #<BigDecimal:210bcf4,'0.9E-2',4(8)>
>> bp.round(2,BigDecimal::ROUND_HALF_DOWN).to_f
=> 0.01
>> bp = BigDecimal('0.0009')
=> #<BigDecimal:2107a8c,'0.9E-3',4(12)>
>> bp.round(2,BigDecimal::ROUND_HALF_DOWN).to_f
=> 0.0
>> bp = BigDecimal('0.00009')
=> #<BigDecimal:2103428,'0.9E-4',4(12)>
>> bp.round(2,BigDecimal::ROUND_HALF_DOWN).to_f
=> 0.01
>> bp = BigDecimal('0.000009')
=> #<BigDecimal:20ff0f8,'0.9E-5',4(12)>
>> bp.round(2,BigDecimal::ROUND_HALF_DOWN).to_f
=> 0.0
Run Code Online (Sandbox Code Playgroud)

哦,如果我使用默认模式,我会得到相同的结果,如下所示:

>> bd = BigDecimal('0.00009')
=> #<BigDecimal:2152ed8,'0.9E-4',4(12)>
>> bd.round(2).to_f
=> 0.01
Run Code Online (Sandbox Code Playgroud)

这是我的版本:

ruby 1.8.6 (2008-03-03 patchlevel 114) [i686-darwin9.2.2]
Rails 2.3.4
Run Code Online (Sandbox Code Playgroud)

有没有人见过这样的东西?

ruby ruby-on-rails rounding bigdecimal

9
推荐指数
1
解决办法
2762
查看次数