Articles of ruby,

检测Rails是否正在运行一个站点

我是在我的公司pipe理一个面向公众的云平台的团队的一员。 我们有一个庞大的用户群,运行面向互联网的虚拟机。 我想对自己的地址空间进行自动扫描,看看是否有人正在运行Rails应用程序,以便我可以通知他们升级他们的Rails版本,以避免本周出现的严重安全漏洞。 我注意到,在一些Apache部署中,有一个Passenger Header是有用的: X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.0.3 但是,这是不可靠的。 我想知道是否有一个可靠的方法来检测Web服务器后面运行的响应头或某种types的GET / POST可以明确的。 谢谢!

Sinatra:热码推动生产?

当我将新代码从我的Sinatra应用程序推送到我的生产服务器时,我正在通过触摸加载新更改的tmp/restart.txt触发乘客重新启动。 问题是这个网站在这个过程中基本上停了10秒。 我如何设置我的服务器,以便我可以完全避免任何宕机? 也就是说,我希望应用程序继续提供旧版本的代码,直到新代码完全加载,然后立即切换到新代码。 使用霰弹枪或sinatra / reloader不会在这里工作,因为这是一个生产环境。 最后,如果答案取决于应用程序服务器,我会对如何与独angular兽和乘客进行交stream感兴趣。

为什么nginx在开发环境中非常缓慢地为我的rails应用程序服务?

我正在开发Mac OSX上的RoR应用程序。 为了能够在http://localhost上访问我的应用程序,并且为了在我的testing中支持SSL,我使用nginx作为Webrick端口3000的代理,具有以下configuration: server { listen 80; server_name app.mysite.com; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; proxy_pass http://127.0.0.1:3000; } } server { listen 443 ssl; server_name secure.app.mysite.com; ssl on; ssl_certificate ssl/server.crt; ssl_certificate_key ssl/server.key; keepalive_timeout 600; ssl_session_timeout 10m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; location / { […]

Rails +(Phusion Passenger | Puma | Unicorn | Thin)+(Nginx | Apache)如何协同工作?

当发出http请求时,上面提到的3个不同的组有什么作用? 在应用程序代码最终被调用之前,他们每个人做了什么?

Nginx在本地将Puma作为Rails应用程序与Puma一起作为OS X的开发环境

我正在尝试在MAC上使用Rails和Puma在本地设置Nginx来练习一些设置。 最终,我将有两个应用程序运行,所以Nginx会负载平衡它们。 对于Rails和Puma我有下一个。 Procfile与: web: bundle exec puma -C config/puma.rb puma.rb与: threads 0,16 workers 1 port 3000 environment "production" bind "unix:///path_to_my_app/tmp/sockets/puma.sock" preload_app! “工头开始”启动应用程序 09:28:15 web.1 | started with pid 31442 09:28:16 web.1 | [31442] Puma starting in cluster mode… 09:28:16 web.1 | [31442] * Version 2.13.4 (ruby 2.2.1-p85), codename: A Midsummer Code's Dream 09:28:16 web.1 […]

连接()到unix:/var/run/unicorn.sock失败(111:连接被拒绝),同时连接到上游

我遵循一个应用程序点击部署轨道上的ruby。 数据库做得很好,即使我检查轨道控制台一切工作正常 017/02/26 15:34:17 [error] 18564#0: *31 connect() to unix:/var/run/unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 121.52.156.57, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:/var/run/unicorn.sock:/", host: "188.166.157.124" 2017/02/26 15:35:42 [error] 32360#0: *1 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 119.155.34.115, server: _, request: "GET / […]

Rails 4应用程序不写入production.log,运行在Nginx,Ubuntu和通过capistrano部署

当客户下订单时,我的应用程序正在中断。 我真的越来越绝望,因为我需要我的production.log来弄清楚是什么打破了应用程序! 我login到:~/mystore/current/log$ nano production.log 而且,自2017年5月23日以来, production.log似乎尚未更新。 这里是production.log的最后一行 I, [2017-05-23T11:12:35.067624 #1060] INFO — : Completed 404 Not Found in 27ms (ActiveRecord: 3.0ms) F, [2017-05-23T11:12:35.069957 #1060] FATAL — : ActiveRecord::RecordNotFound (Couldn't find Label with 'id'=10): app/controllers/labels_controller.rb:21:in `set_label' 现在我不明白为什么我的应用程序今天打破。 这很奇怪,因为我一直可以通过production.log来监视性能 这是production.rb的设置 config.log_level = :info config.logger = ActiveSupport::Logger.new('/tmp/foo.log') config.logger.info "SMTP_ADDR: #{ENV["SMTP_ADDRESS"].inspect}" config.log_formatter = ::Logger::Formatter.new 在deploy.rb我sim-linking,不知道这是否有任何事情要做。 set :linked_files, %w{config/database.yml […]

使用nginx工作在Phusion Passenger上的Sequel DB连接的正确位置

我使用Sinatra + Sequeltesting了使用ruby编写的应用程序。 config.ru: require './main' run Sinatra::Application 示例代码: require 'sinatra' require 'haml' require 'sequel' DB=Sequel.connect('oracle://test:test@test') class Tarification < Sequel::Model(DB[:test_table]) end get '/' do haml :index end 在我的testing环境中开始使用Phusion Passenger之前,一切正常。 现在我在nginx error.log中有exception: Sequel :: DatabaseError – RuntimeError:连接不能在分叉进程中重用。 将数据库连接例程放置在rackup文件config.ru中是正确的,还是以不同的方式做到这一点? 如果第一个变体比如何从应用程序代码中调用连接正确? PS:我知道我可以做passenger_spawn_method conservative并继续在应用程序代码中打开连接,但由于速度和资源使用问题,这不是我要找的方式。

-su:bundle:启动独angular兽时找不到命令

我正在DigitalOcean(fyi,这是教程, link1 , link2 )上的一个教程,使用独angular兽和nginx安装一个生产准备好的Rails应用程序,当我到达安装独angular兽的部分。 当我尝试在控制台中input这个内容时: sudo service unicorn_appname start 我得到这个错误: Starting appname -su: bundle: command not found 所有用户可以捆绑。 这个信息对我来说没有意义。 有任何想法吗?

从rails 3.2 / nginx / phusion passanger响应头中缺lessE-tags

我有一个非常简单的电子标签控制器: class EtagsController < ApplicationController before_filter :require_user def index if stale?(:etag => current_user) render :layout => false end end end 当我在我的本地开发环境中运行这个时,第一个请求是响应中带有ETag的200。 第二个请求提交ETag,我得到了预期的304响应。 但是,当在分段或生产环境中执行此操作时,响应中不会有ETag。 以下是来自我的临时环境的请求和响应标题: Request URL: /etags Request Method:GET Status Code:200 OK Request Headers Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 Cache-Control:max-age=0 Connection:keep-alive Cookie:__utma=169165539.1455374302.1372358226.1372358226.1372358226.1; __utmb=169165539.1.10.1372358226; __utmc=169165539; __utmz=169165539.1372358226.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); user_credentials=4ffa15df84112d22434f121eed06c59a5c32cb9ab72cf6bf1e952a3993201b5dec2917a028d20d4b63c70a84c6a290c4d5c4673ce967efec6f139c161850bc37%3A%3A101; _session_id=d21671b70349653406442ee0716633b2 User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like […]