Articles of ruby

为什么Chef在我的开发环境中使用我的默认属性?

我inheritance了我们公司的厨师库,我正在学习。 有一个问题,我find了一个解决方法(但希望了解或避免,如果可能的话)是在我的开发环境中节点不可用的菜谱中指定的属性默认值。 所以为了让这些在生产中运行良好的东西在开发中运行,我必须做出这样的改变: 在生产中工作 default[:webservices][:debug] = "False" default[:webservices][:template_debug] = "False" 在开发中工作 set[:webservices][:debug] = "False" set[:webservices][:template_debug] = "False" outlook未来,我希望能够指定一个默认值,然后覆盖它进行开发,比如使用开发数据库设置等。 为什么不是在开发中的default访问器? 我可以根据要求提供更多的configuration细节。

我如何启动unicorn_rails作为在我的Ubuntu 12.04机器上安装rvm的启动脚本?

我的服务器上有一个rails应用程序。 我有一个脚本startup.sh启动unicorn_rails,然后nginx。 为了让我的服务器在系统启动时启动,我添加了一行来调用我的启动脚本到/etc/rc.local 但是,这不起作用。 我添加了一些检查,以确保脚本被调用,它是。 这是呼吁unicorn_rails,我认为是失败的。 有人对此有经验吗?

没有收到数据 – 乘客,(52)来自服务器的空回复

我上个月为我的Rails应用程序(Passenger)设置了Elastic Beanstalk。 一切都很好..但突然之间,我的服务器没有反应良好。 我的应用程序访问权限是“没有收到数据 – 错误324(net :: ERR_EMPTY_RESPONSE):服务器closures了连接而不发送任何数据”。 当我curl的应用程序,我得到curl:(52)从服务器的空回复。 这是乘客问题吗? 我是pipe理服务器的新手。

Ubuntu,ruby 2,rails 4

我试图设置一个服务器,它有Ubuntu 10.04 LTS,Ruby 2.0.0-p0和Rails 4 beta1。 我可以得到一切安装,但轨4有一个小错误,我想得到某人的意见。 当我做'gem安装rails – 版本4.0.0.beta1 – 无ri – 无rdoc'我得到下面的错误。 rdoc的可执行文件“rdoc”与/ usr / local / bin / rdoc冲突 覆盖可执行文件? [YN] 如果我说'N',那么我得到下面的错误ans退出安装: ERROR: Error installing rails: "rdoc" from rdoc conflicts with /usr/local/bin/rdoc 如果我说'我'然后得到: rdoc's executable "ri" conflicts with /usr/local/bin/ri Overwrite the executable? [yN] 如果我说“N”,它会再次退出,但如果我说“Y”,它将继续安装。 通过对上述2个选项说“y”,这是否会影响其他内容? 另外,我还以为' – no-ri –no-rdoc'选项在包含时不会安装?

Rails:多种应用程序部署策略

在我的公司,我们目前有一个主要的项目是一个巨大的Rails应用程序。 部署非常简单,我们有几个Capistrano部署到/var/www/<hostname>/current的前端服务器(使用Puppet进行安装)。 然后重新启动Unicorn(零停机部署!),每个人都很高兴。 不幸的是有一个问题。 应用程序的单一性质开始咬我们。 现在运行所有testing需要30分钟以上,并且正在减慢我们的速度。 我们希望将其分成更小的块,并采用更多的μService体系结构。 不过这让我想起了我们的部署策略。 现在看来: Rails应用程序和Nginx作为www-data用户运行 任何有权访问该框的用户都可以进行部署(在Capistrano中,我们会在部署期间将应用程序的内容分发给用户) 这样做的安全性相当低(一切以同一用户身份运行,每个人都可以访问所有内容)。 这也让我想起我们以前的公司做过的事情 – 这是一个噩梦,因为所有的应用程序都被困在Ruby 1.6上,因为它们共享相同的版本。 我想我们可以通过安装rbenv让每个应用程序运行它自己的Ruby版本,并让每个应用程序的用户来提高安全性。 但是我在实践中还没有真正看到这个例子。 例如, 37signals以同一用户身份运行所有应用程序 – 我担心应用程序不能作为不同用户运行的充分理由。 总结: 在μService风格体系结构中将多个Rails应用程序部署到服务器的最佳方式是什么? 什么是隔离每个应用程序(在Ruby版本和用户安全方面)的最佳方式? 提前致谢!

Mongrel在操作系统更新后无法启动

所以这个安装在由Pleskpipe理的虚拟服务器上,运行CentOS。 操作系统最近自动更新 – 这打破了自定义的ruby安装。 我没有设置原来的东西,不熟悉ruby,所以我有点不知所措。 通过包pipe理器,我确定安装了指定的ruby和gem。 我将原始的ruby文件夹复制回原来的/ var / www / vhost /文件夹。 在那里,httpdocs文件夹有一个到rails / servername / public文件夹的软链接。 所以从技术上讲网站的内容应该和以前一样。 但ruby/杂种日志甚至不更新。 当我访问这个站点时,Apache抛出一个503-服务暂时不可用的错误。 error_log是唯一正在更新的内容,这是重新启动后包含的内容: [Sun Apr 21 06:18:30 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Sun Apr 21 06:18:30 2013] [warn] RSA server certificate CommonName (CN) `plesk' does NOT match server name!? [Sun Apr 21 06:18:30 2013] […]

用于托pipe多个应用程序的VPS设置(通过虚拟机?)

首先,我不是一个pipe理员,所以如果我的问题有点明显/跛脚 – 我只是一个ruby程序员,他想在他的服务器上托pipe几个应用程序;) 可以说,我有3个应用程序,我想在我的VPS上托pipe。 我想尽可能分开他们所有(单独的ruby / postgres版本等)。 目前,我正在考虑使用哪种devise来实现这一点。 最近,我尝试了stream浪汉 ,我真的很喜欢把所有的应用程序放在不同的虚拟机上。 我的问题是,如果这不是过度工程,使这个网站在不同的虚拟机? 难道有人指出,只有3个用户,在本地安装ruby / postgres,这种方法与方法的一些主要优点/缺点? 我看到这个: 使用虚拟机方式,我完全分离 – 我可以重新启动/重新安装一个虚拟机,而不会影响另一个虚拟机。 如果一台虚拟机发生故障,不应该对另一台虚拟机产生性能影响 在开发和生产环境中,我可以拥有完全相同的环境 VM方法需要更多的内存/ CPU才能运行3个操作系统 我的另一个问题是关于路由请求: 假设我将在我的VPS上安装nginx,并且我有4个域连接到这个: example.com和foo.com => App1 bar.com => App2 other.io => App2 asd.bar.com => App3 有没有简单的方法来设置路由? 我梦想着某种configuration文件,我可以指定哪个域应指向哪个应用程序… 如果没有,有人可以发布一些资源,我可以find有关该路由的东西吗? (我真的想自动化这个,所以添加另一个站点/ VM也应该设置路由)

需要一个Ruby脚本中的gem启动时失败

我正在使用厨师使用机器启动。 我需要它来安装一个init.d脚本,当脚本在chef运行结束时被调用,脚本在require'守护进程'行(如下所示)上失败。 我在require和require之前和之后有一个打印logging。 # my_invoked_script.rb $stdout.reopen("output.txt") $stderr.reopen("err.txt") pid = fork if pid.nil? puts "Before" require 'daemons' puts "After" … else Process.detach(pid) end 之前的打印logging。 打印后不是。 我想,因为这是在启动时,一些envvariables可能不会设置正确。 有没有人能够在启动时运行ruby脚本的需求? 我的init.d脚本是一个具有启动function的标准脚本,如下所示: start(){ /usr/local/bin/ruby /home/ubuntu/my_invoked_script.rb } login到terminal并运行脚本显示没有错误,事情正常进行。 ruby1.9.2 Ubuntu的11.04虽然我不知道他们中的任何一个是这里的问题。

调查Heroku上的并发问题

我在Heroku上的Rails应用程序遇到问题。 它可以处理的每分钟请求数量突然下降了SHARPLY。 我正在寻找一些事情来调查如何解决这个问题,因为我们今天正在发布,我所检查的一切似乎无法提高这个性能上限。 具体来说,我的设置是:具有MongoHQ数据库的Heroku,Unicorn和Rails。 2天前的结果:每分钟40,000个请求结果现在:每分钟2000个请求 我已经尝试了以下步骤来将性能恢复到之前的水平,但是没有一个有所作为,我很困惑: – 增加dynos的数量 – 交换到2x dynos – 回滚到之前的代码库和configuration文件 – 禁用纸质logging – 在错误日志中查找Heroku错误 – 在mongoHQ中查找交换或大型索引 – 检查内存使用情况 – 看起来很好 – 检查/调整独angular兽设置 – 更多的工作人员,更短的待办事项 每分钟的请求中唯一的变化是我已经取得了成功,将dynos降低到4以下会减less每分钟的请求次数。 还有什么我没有检查?

Ubuntu,mysql服务器连接

大家好,请忽略我的noobness, 我的问题从在Ubuntu 12.04连接到MySQL开始 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 并经过debugging和谷歌search后,我发现在error.log中, 130714 11:23:45 [Note] Plugin 'FEDERATED' is disabled. ^G/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13) 130714 11:23:45 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 130714 11:23:45 InnoDB: The InnoDB memory heap is disabled 130714 […]