Articles of ruby

用Passenger切换ruby版本,出现错误

我最近从2.2.5切换到2.1.5,注意到我试图编译和下载这样的解释器: [ 2015-10-25 11:15:15.3328 8841/b6ad5b40 age/Cor/CoreMain.cpp:793 ]: Disconnecting long-running connections for process 16579, application /var/apps/app/public (production) App 17117 stdout: App 17117 stderr: –> Compiling passenger_native_support.so for the current Ruby interpreter… App 17117 stderr: App 17117 stderr: (set PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY=0 to disable) App 17117 stderr: App 17117 stderr: –> Downloading precompiled passenger_native_support.so for the current Ruby interpreter… […]

Puppet Provider中的自定义gem

我正在运行木偶3.7,我有以下问题: 用pe_gem在代理上安装nokogiri gem。 写了一个自定义的供应商,确实require 'nokogiri'在顶部。 木偶运行“有时”失败,“无法从Ruby自动加载器加载'nokogiri'”错误。 事情是 – 它首次从Puppet master获得提供者。 所有后续运行失败。 我的猜测是,不知何故,在我的提供者之前加载了一些东西,使得它可以工作。 有没有其他人经历过这个问题呢?还是想想可能是什么?

在Nginx / Passenger中托pipe的Ruby / Rails应用程序的头文件中设置环境variables

我为Redmine安装了一个服务器,使用Nginx / Passenger运行。 服务器还托pipeGitlab,并且进展顺利。 我为Redmine提供了一些SSO插件(我发现并安装了这个插件),它需要一个环境variables来填充用户名:这是一个棘手的问题。 到目前为止,我可以分开 : 从X-Forwarded-User头获取用户名 自动连接到Redmine传递用户名作为一个常数值 自动连接到Redmine传递正确的用户名作为一个常数值testing当前转发的值=>这是丑陋的,需要做每个现有的用户testing 但我不能直接设置用户名与转发的值,它看起来像$ http_x_forwarded_uservariables不被评估… 有一个很好的解决scheme吗? 我目前的Nginx / Passengerconfiguration: upstream gitlab-workhorse { server unix:/var/opt/gitlab/gitlab-workhorse/socket fail_timeout=0; } server { listen 0.0.0.0:80; listen [::]:80 ipv6only=on default_server; server_name server.example.com server_tokens off; ## Don't show the nginx version number, a security best practice root /opt/gitlab/embedded/service/gitlab-rails/public; location / { proxy_read_timeout 300; proxy_connect_timeout 300; […]

Nginx 404使用Phusion Passenger部署Ruby on Rails应用程序

这里有很多移动的部分,我对这个程序有不同程度的熟悉,所以我希望另一组眼睛能够帮助我发现为什么我在运行Phusion Passenger的Nginx上部署Rails应用程序后得到404。 我的应用程序/公共目录目前驻留在: $pwd >> /root/public_html/photobook/public 我在nginx.conf中的服务器设置: server { listen 80; server_name pb.mysite.com; root /root/public_html/photobook/public; # <— be sure to point to 'public'! passenger_enabled on; } 但重启nginx之后: sudo /opt/nginx/sbin/nginx 去我的浏览器显示由Nginx提供的404页面。 有没有规则处理子域名比我不知道? 或者这完全是另一回事? 另外,因为我是Nginx的Passenger,所以有一个日志文件,我应该find这个日志文件,可以给我更多有用的404反馈,比如它正在查找什么页面? 谢谢! 编辑 首先,感谢关于/ var / log的build议。 我不知道; 这将是一个很大的帮助。 我不确定我的系统日志(我有两个看起来是当前的,然后看起来像.gz备份回去)logging任何相关的,但是: Jun 23 01:25:01 myusername /USR/SBIN/CRON[11379]: (root) CMD ( cd / && run-parts –report […]

如何将Rails应用程序中的ruby移动到新的服务器上

我有一个旧的Ubuntu服务器上的Rails应用程序,我需要移动到一台新的机器上。 我没有在轨道上使用ruby,所以我真的不知道应用程序的结构。 我想将其加载到Amazon EC2上的Ubuntu 8.04 AMI上,并且正在查找有关迁移过程的任何信息,例如: 我是否复制在mongrelconfiguration中定义为应用程序根目录的整个文件夹(例如:/ u / apps / myapp / current)还是只复制某些文件夹? 如果我使用最新版本的ruby和各种gem,我是否正在寻找麻烦? 任何一般的问题都需要在这个过程中注意。 当前服务器信息: root@webnode001:/# cat /proc/version Linux version 2.6.15-27-server (buildd@terranova) (gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)) #1 SMP Fri Dec 8 18:43:54 UTC 2006 root@webnode001:/# rails -v Rails 1.2.3 root@webnode001:/# mongrel_rails cluster::configure –version Version 1.0.1 root@webnode001:/# gem -v 0.9.0 root@webnode001:/# gem list […]

将命令行标志传递给RSpec最直接的方法是什么?

我需要在多个环境中运行RSpec示例。 我想通过一个标志到RSpec,一个case语句可以closures,以设置适当的值。 这是很自然的想要做的事,我必须忽视这个显而易见的事情。 感谢您的帮助。

使用Monit监视Resque

我正在尝试使用resque作为Rails的职位。 我已经尝试过这个configuration,还有许多其他的妖魔化救援任务的方式(因为运行rake resque:work离开与该命令绑定的terminal)。 不幸的是,他们的示例configuration不适合我。 configuration看起来是否正确? 或者还有另一种方法将stream程转变成守护进程? 谢谢 :) check process resque_worker_QUEUE with pidfile /data/APP_NAME/current/tmp/pids/resque_worker_QUEUE.pid start program = "/bin/sh -c 'cd /data/APP_NAME/current; RAILS_ENV=production QUEUE=queue_name VERBOSE=1 nohup rake environment resque:work& > log/resque_worker_QUEUE.log && echo $! > tmp/pids/resque_worker_QUEUE.pid'" as uid deploy and gid deploy stop program = "/bin/sh -c 'cd /data/APP_NAME/current && kill -s QUIT `cat tmp/pids/resque_worker_QUEUE.pid` && […]

监测缓慢的nginx /独angular兽请求

目前我正在使用Nginx将请求代理到运行Sinatra应用程序的Unicorn服务器。 应用程序只定义了几条path,这些path对PostgreSQL数据库进行相当简单的(非昂贵的)查询,最后以JSON格式返回数据,这些服务都由上帝监视。 我目前正在经历从这个应用程序服务器响应时间非常缓慢。 我有另外两个通过Nginx代理的Unicorn服务器,而且这些服务器的响应非常好,所以我认为我可以排除Nginx中的任何错误。 这是我的上帝configuration: # God configuration APP_ROOT = File.expand_path '../', File.dirname(__FILE__) God.watch do |w| w.name = "app_name" w.interval = 30.seconds # default w.start = "cd #{APP_ROOT} && unicorn -c #{APP_ROOT}/config/unicorn.rb -D" # -QUIT = graceful shutdown, waits for workers to finish their current request before finishing w.stop = "kill -QUIT `cat #{APP_ROOT}/tmp/unicorn.pid`" w.restart […]

为所有用户安装Ruby / Rake的首选方法

我们有几个不同的服务器设置来处理我们的旗舰产品。 我们有一个开发服务器,一个演示/登台服务器和一台生产服务器。 所有这些运行在Debian或Ubuntu的一些变体上。 为了pipe理新客户端的创build,压缩备份,列出统计数据等等。 我创build了一个新的Git仓库(托pipe在GitHub上 ),其中包含一堆Rake任务。 然后我使用rvm来安装Ruby和bundler来安装必要的gem,并使用rvmsudo rake my_task来执行任务。 直到我有一个新的开发人员join该项目,这工作得很好。 他不得不下载rvm,安装ruby,并安装所有适当的gem来使其正常工作,而且要确定是否使用sudo或rvmsudo是一件痛苦的事情,因为它在每台机器上的设置稍有不同。 所以,我想有点新开始,并重新安装在每台服务器上的一切。 理想情况下,我希望我的开发人员将Git repo克隆到其主目录(以防他们自己修改rake任务),并使用sudo或rvmsudo执行rake任务。 我想将其标准化,以便他们不必猜测它是哪一个。 我记得在安装最新版本的Ruby,Rails和Rake时遇到了一些麻烦,这就是为什么我改用rvm,但看起来这可能是一个糟糕的select。 那么,有没有人知道一个伟大的指南或有任何关于如何设置服务器上的Ruby / Rails / Rake指针,使所有的开发人员与sudo访问可以执行命令,而不必担心安装什么? 非常感谢!

rvm版本切换后,gem install rails上的zlib错误

(Debian挤)rvm版本:1.10.0 我刚刚使用“rvm install 1.9.2”安装了ruby 1.9.2-p290,并将其设置为默认值。 但是,当我试图用rubygems安装rails时出现这个错误。 “gem install rails”在我的系统ruby安装上工作的很好。 root:/ usr / bin#rvm list rvmruby => ruby​​-1.9.2-p290 [i686] root:/ usr / bin#rvm current ruby​​-1.9.2-p290 root:/ usr / bin#gem list *本地GEMS * root:/ usr / bin#gem install rails错误:加载命令:install(LoadError)no load file – zlib 错误:执行gem时(NameError)未初始化常量Gem :: Commands :: InstallCommand 我已经尝试了在这个其他页面上的说明: https ://stackoverflow.com/questions/2441248/rvm-ruby-1-9-1-troubles,(apt-get install zlib,在rvm上重新安装1.9.2),但这似乎没有工作。 任何想法可能是根本问题?