Articles of ruby

最适合自定义Puppet事实的地方 – RHEL

我不是一个Ruby的家伙,但发现如何列出的Ruby负载path。 这是我看起来的样子 $ ruby -e 'puts $:' /usr/lib/ruby/site_ruby/1.8 /usr/lib64/ruby/site_ruby/1.8 /usr/lib64/ruby/site_ruby/1.8/x86_64-linux /usr/lib/ruby/site_ruby /usr/lib64/ruby/site_ruby /usr/lib64/site_ruby/1.8 /usr/lib64/site_ruby/1.8/x86_64-linux /usr/lib64/site_ruby /usr/lib/ruby/1.8 /usr/lib64/ruby/1.8 /usr/lib64/ruby/1.8/x86_64-linux 其中一些目录甚至不存在,坦率地说,我认为自定义的.rb文件最好放在Puppet-ish位置,比如/ etc / puppet / facts或类似文件。 我应该使用现有的加载path位置之一还是为了Puppet创build一个新的加载path位置?

有没有相当于“一些内容#{富}”ruby的bash?

我习惯于能够在Ruby中的string内传递variables,像这样 "message in double quotes #{expression_or_variable_to_run}" bash中的等价物是什么,对于真正快速的脚本?

这个日志是什么意思?

当我的应用程序正在运行(有很多stream量)时,我在错误日志中看到这个,但是我甚至不明白它是什么。 我想这是优化一些configuration,但我需要更正式的解释。 App 13214 stderr: Trying: App 13214 stderr: zc = 9 zm = 9 zs = 0 f = 0 App 13214 stderr: IDAT size = 5698 App 13214 stderr: zc = 9 zm = 8 zs = 0 f = 0 App 13214 stderr: IDAT size = 5698 App 13214 stderr: zc = […]

将Ubuntu升级到Ruby 1.8.7

我的服务器正在使用aptitude安装Ubuntu Hardy和Ruby 1.8.6。 我想升级到Ruby 1.8.7,但不幸的是,Ruby包包括从Ubuntu Intrepid开始的Ruby 1.8.7。 我阅读了几个关于如何升级到Ruby 1.8.7的教程,我发现至less有三种不同的方式来完成这个任务: 反向移植 从源代码安装 从源代码和多个版本安装 我有点困惑。 你如何build议升级到Ruby 1.8.7考虑到我不需要在同一台服务器上的多个Ruby版本? 我想用Ruby 1.8.7干净地replace现有的Ruby 1.8.6。

由独angular兽服务的Rails会为预编译的资产生成错误的指纹

我有一个生产服务器与nginx – >独angular兽 – >铁轨。 我预先编译的资产,把资产放在公共/资产与指纹(哈希)追加到文件名。 但是,当请求网页时,对application.css和application.js资源的引用将具有错误的指纹。 例如,rails helper stylesheet_link_tag将生成一个文件名,这个文件名在服务器的public / assets中不存在,因为请求的指纹与预编译的指纹不匹配。 图像资产工作正常(指纹匹配)。 对此进行故障排除,我在本地机器上预编译了资源,指纹与我服务器上的预编译指纹相匹配。 而且,在生产模式下使用webrick在本地运行时,一切正常。 然后我尝试在我的服务器上运行webrick,这使得我认为独angular兽是问题的根源。 我已经用–no-default-middleware(或-N)选项启动独angular兽来解决这个问题,并且这使得独angular兽像预编译的资产一样按预期行事。 我的理解是,这告诉独angular兽不要加载一个默认的Rack中间件,否则它会加载。 但是,我不明白为什么这个问题能够解决,或者是出了什么问题。 到底是怎么回事? 一些细节:Ubuntu 12.04,Rails 4.0.1,Ruby 2.1.0,带有第三方主题的bootstrap 3.0 更新: 我不相信这是一个nginx问题的原因是,当我从浏览器请求页面,然后查看源文件,application.css文件的文件名具有指纹,所以它实际上看起来像application-3855b1928b94aa5bff5e1dac1aa56882。 CSS。 这与我的服务器上的文件的真实指纹不匹配。 我确信服务器上的指纹是正确的,因为我在本地开发机器上得到了相同的指纹。 所以客户端正在加载网页,然后询问服务器的.css文件… nginx收到该请求,但无法find.css文件,因为它实际上不在那里,所以nginx行为如预期。 指纹产生两次:一次当我预编译资产,这是正常工作(很确定),并没有独angular兽参与发生。 第二次,当一个独angular兽工作人员看到stylesheet_link_tag助手的轨道并dynamic计算指纹(我认为这就是它在做什么),由于某种原因,这些指纹产生了不正确的指纹。 如果我在同一台服务器上用webrickreplace独angular兽,同样的过程也会发生,但是在这种情况下,指纹是匹配的。 如果我用-N旗启动独angular兽,指纹相匹配,但我不知道为什么这会有所作为,我不知道为什么没有人似乎必须这样做。

预先填充vagrant同步的文件夹内容

我目前正在构build一个相当复杂的服务器堆栈(Rails应用程序中的ruby),我希望开发人员无需自己安装所有东西即可开始工作。 所以我使用stream浪汉来允许他们这样做。 这个想法是,当你第一次安装镜像的时候,它会提取最新的源代码并安装依赖项,这些源代码会被同步文件夹(一个内build的特性)展现出来,这样开发人员可以在自己的环境中提交源代码并编辑它们。 Vagrant-box仅用于服务器。 Vagrantfile中已同步的文件夹条目: config.vm.synced_folder "gameeso/", "/var/gameeso", :create => "true" 该图像是一个具有新贵脚本的Ubuntu服务器(脚本在启动时执行,只有当Internet连接启动时): 从Github拉最新的开发分支(如果文件夹已经不存在) 安装依赖关系(这由脚本完成) 启动服务器 所有这些都发生在一个同步文件夹中。 这种方法我遇到了一些问题,主要是Vagrant清除了我的客户系统上的同步文件夹。 我通过在upstart脚本中添加“sleep 10”来解决这个问题,所以可以等到Vagrant设置同步文件夹。 当然,这不是一个安全的方法(如果启动需要10秒以上的时间,尽pipe现在不太可能,但是我不想知道);) 我的问题是:是否有一个更好的方式让guest-host(stream浪者图片)填充同步文件夹? 当然,非常感谢提前!

在Amazon中用于Ruby服务器的最佳AMI是什么?

我以前安装过Amazon EC2服务器的实例。 我知道在服务器上安装MySQL,Postgres,Rubygems,Ruby等需要一段时间。 我想知道是否有更好的方法。 例如,开始使用现有/公开的AMI。 如果是这样的话,那么只能运行Ruby(Sinatra / Rails with Postgres或MySQL)应用程序的服务器最完整的AMI是什么? 谢谢!

当尝试同时向同一主机发出多个出站连接时,SSH'连接重置'

我有一个脚本执行一个Rake远程任务,为每个angular色执行一次。 这两个angular色都是同一个Vagrant实例的用户。 所以本质上这个任务是并行打开两个SSH连接到同一个虚拟机,并在每个连接上执行一些命令。 我经常发现,当这个任务执行时,会产生下面的错误: ssh_exchange_identification: read: Connection reset by peer 但是,这只发生在我们的Jenkins从属节点上,这是一个Mac Mini。 我想出了一个简单的例子来重现连接重置行为: ssh root@vagrant-target "echo hello" & ssh root@vagrant-target "echo bye" 我也发现执行上面的命令不会重现我的本地MacBook Pro实例,它具有相同的Vagrant设置,即使我反复做这个错误。 两台机器都具有相同的操作系统版本,以及相同版本的SSH。 我也用-vvv运行了上面的ssh命令,但没有看到任何明显的东西。 唯一想到的是,我在Jenkins机器上看到了一些sshd进程,可能是由Jenkins使用的: jenkins 34394 0.1 0.0 2471700 840 ?? S 6:27PM 0:00.05 /usr/sbin/sshd -i jenkins 35220 0.0 0.0 2470872 1284 ?? S 6:27PM 0:01.38 /usr/sbin/sshd -i root 35218 0.0 0.0 […]

RPM打包ruby项目

我想打包一个从git获得的ruby程序到RPM包中。 我有我的处置build立服务器和生产服务器(相同的OS /相同的拱门)。 作为大多数ruby项目,我的确有gem依赖项。 我发现了两种做我想做的方法,我想知道哪一个是最好的 – 最unix / linux的哲学 – 操作明智 在生产服务器上捆绑较less 第一个(对我来说看起来更好)是做一个bundle install –standalone –deployment –path %{buildroot}/usr/lib/rubygems/1.8/gems/ –binstubs %{buildroot}/usr/lib/rubygems/1.8.bin 。 这将在要部署.rpm的服务器上的gem系统path上安装gem,不需要安装bundle。 在哪里我不确定,是什么时候我会安装其他转速与相同的gem会发生什么? 当我用两个软件包共享的gem移除一个软件包时发生了什么? 在生产服务器上捆绑 bundle install –deployment命令将直接在项目本身中进行。 这样一切都可以在vendor/目录中find。 在线上,我可以看到一些有关供应商一切政策的文章,但这似乎并不正确,因为大量的gem将会被复制。 由于我没有一个ruby背景,我不知道它可以有什么确切的利弊 如果有人已经做了类似的事情,你要采取哪种方式? 什么 – 操作明智 – 是最好的呢?

如何使用Serverspec编写本地testing?

到目前为止Serverspec正在努力工作。 我正在testing我的服务器,一切看起来不错。 比方说,我想通过从本地工作站运行几个LDAP命令来testing我的LDAP集群,比如说ldapsearch 。 我在工作站而不是任何服务器上执行此操作的原因是为了确保所有工作都可以远程执行,包括负载平衡。 什么是约定? 这是如何完成的? 我需要对Rakefile做什么修改? 我已经通过serverspec-init生成了一个Rakefile 。 这个地方的任何例子?