Articles of ruby

如何解决厨师错误“无法find一个插件的依赖linux ::networking”?

没有谷歌命中这个错误消息。 我试图在过去成功运行的服务器上运行chef-client。 我不知道是什么改变产生这个错误。 这里是我能想到的最详细的输出: > chef-client -l debug [2014-10-09T17:50:19-05:00] INFO: Forking chef instance to converge… [2014-10-09T17:50:19-05:00] DEBUG: Fork successful. Waiting for new chef pid: 17823 [2014-10-09T17:50:19-05:00] DEBUG: Forked instance now converging Starting Chef Client, version 11.16.4 [2014-10-09T17:50:19-05:00] INFO: *** Chef 11.16.4 *** [2014-10-09T17:50:19-05:00] INFO: Chef-client pid: 17823 [2014-10-09T17:50:19-05:00] DEBUG: Chef-client request_id: 8ebe3de0-1e0a-4647-b2bb-d48aa020b815 [2014-10-09T17:50:19-05:00] WARN: [DEPRECATION] […]

以其他用户(不是root)的身份运行启动shell脚本,

我已经在Ubuntu 14.04上使用'user01'安装了RVM,并且user01可以按照预期启动我的rails应用程序。 然而,我想在系统启动后启动这个应用程序。 我正在尝试使用以下来实现这一点: /var/script/start.sh screen -d -m mongrel_rails start -e production -p 8088 /etc/rc.local (在退出0之前添加) sh './var/script/start.sh' 使用上面的更改,我的rails应用程序无法启动。 我可以证实这一点,因为没有活动的GNU屏幕会话(屏幕-d -m mongrel_rails …命令启动屏幕会话并分离,我应该能够看到与“screen -ls”命令的会话,但我不要,甚至切换到根后)。 我切换到根(sudo su),并尝试手动启动应用程序,但失败,如下所示: / usr / bin / env:ruby:没有这样的文件或目录 我认为RVM / Ruby已经被破坏了。 我通过运行'ruby -v'确认了这一点,它返回了一条确认应用程序未安装的消息。 看到有关安装的ruby版本的信息的user01不是这种情况。 我继续find一个解决办法,发现这个post ,build议在执行启动命令时切换到用户以下命令。 su user01 -c '/var/script/start.sh' 这也没有帮助,经过调查,我发现,当我su'user01'从root的ruby被打破了user01。 'ruby -v'也没有返回预期的信息。 手动testing后,我发现input“退出”返回到我的根,另一个“退出”返回到我的帐户user01(我用来login的帐户)和ruby正常工作。 任何人都可以提出一个方法来解决这个问题?

在香草Ubuntu的gem安装失败 – EACCESS

我试图在Ubuntu Trusty(i386)的完全通用的安装上安装Middleman gem。 这是我的控制台input/输出: vagrant@vagrant-ubuntu-trusty-32:~/rj$ which ruby /usr/bin/ruby vagrant@vagrant-ubuntu-trusty-32:~/rj$ ruby -v ruby 1.9.3p484 (2013-11-22 revision 43786) [i686-linux] vagrant@vagrant-ubuntu-trusty-32:~/rj$ gem install middleman Fetching: bundler-1.7.7.gem (100%) ERROR: While executing gem … (Errno::EACCES) Permission denied – /var/lib/gems 正如你所看到的,在我的主机系统上出现类似的错误之后,我使用了一个Vagrant虚拟机。 (别人之前的问题的另一个答案已经指向了stream浪汉和Docker,每一个都给出了如上所述的输出。)有趣的是,即使使用sudo gem install middleman给我带来了问题。 (我想过把这个输出粘贴到这里,如果有人问,我仍然可能会这样做,但是说实话,我宁愿避免把外部的gem作为root来使用,而应该把注意力集中在上面的错误上。所有这些都是为了创build一组定义的输出,从而限制了对特权和自定义的需求。) 有没有人遇到过这样的错误? ====================== 编辑:通过请求,这里是我使用sudo gem install middleman时的输出: Fetching: bundler-1.7.7.gem (100%) Fetching: rack-1.5.2.gem (100%) Fetching: tilt-1.4.1.gem (100%) […]

木偶:如何写出适当的“条件和条件”声明?

我写了一个“今日消息”Puppet模块,影响我公司所有的代理服务器。 在模板文件中,我有以下“if语句”: <% if @hostname !~ /^haproxy\d+/ and @hostname =~ /proxy\d+/ -%> if [ "$(cat $LBMEMFILE)" = "0" ]; then echo -e "\e[35m Membeship in LB: Yes" elif [ "$(cat $LBMEMFILE)" = "2" ]; then echo -e "\e[35m Membeship in LB: No $LISTMEMFILE" fi <% end -%> 它的意义: 如果主机名为proxy0-100而不是^ haproxy0-100,则向motd脚本添加一行。 但由于某种原因,这种说法不起作用。 我也尝试使用“除非”,但无济于事。 如果我删除第一行中的“和”之后的语句,它就像一个魅力。 这是我得到的错误: Error: […]

木偶定义types并从1 .erb文件创build多个模板

我需要find解决我遇到的这个问题。 我有一个散列(它应该被重写为稍后的智能类参数),我在我的template.erb中迭代来生成多个文件资源,我已经定义了一个数组。 我想迭代在通过第一组键值对后停止,然后开始写入下一个文件。 我会举一个例子来说明一下。 #### init.pp #### class testing ( $nameid = ['alex','ben'], $game_code = { alex_super_mario => { "type" => "1", "characters" => { "bowser" => "123", "luigi" => "456", "princess" => "789" } }, ben_mega_man => { "type" => "2", "characters" => { "something" => "111213", "else" => "131415", "lastone" => "161718" } […]

独angular兽显示机架错误未初始化的常量Rack :: Lint :: REQUEST_METHOD

我试图在Ubuntu 14.04上安装Unicorn + Nginx。 每当该网站被访问(通过本地主机:8080或通过Nginx)它只是返回一个空白的500错误。 错误日志给了我以下内容: NameError: uninitialized constant Rack::Lint::REQUEST_METHOD /var/lib/gems/1.9.1/gems/rack-1.6.0/lib/rack/lint.rb:298:in `check_env' /var/lib/gems/1.9.1/gems/rack-1.6.0/lib/rack/lint.rb:43:in `_call' /var/lib/gems/1.9.1/gems/rack-1.6.0/lib/rack/lint.rb:37:in `call' /var/lib/gems/1.9.1/gems/rack-1.6.0/lib/rack/showexceptions.rb:24:in `call' /var/lib/gems/1.9.1/gems/rack-1.6.0/lib/rack/commonlogger.rb:33:in `call' /var/lib/gems/1.9.1/gems/sinatra-1.4.6/lib/sinatra/base.rb:218:in `call' /var/lib/gems/1.9.1/gems/rack-1.6.0/lib/rack/chunked.rb:54:in `call' /var/lib/gems/1.9.1/gems/rack-1.6.0/lib/rack/content_length.rb:15:in `call' /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:580:in `process_client' /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:660:in `worker_loop' /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:527:in `spawn_missing_workers' /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:153:in `start' /usr/bin/unicorn:126:in `<main>' E, [2015-04-11T11:20:00.945818 #25817] ERROR — : app error: uninitialized constant Rack::Request::SCRIPT_NAME (NameError) E, [2015-04-11T11:20:00.945882 #25817] ERROR — : /var/lib/gems/1.9.1/gems/rack-1.6.0/lib/rack/request.rb:21:in […]

ChefSpec – testinginclude_reciepe时的覆盖率

我正在尝试为我们的一些Cookbook写ChefSpectesting。 其中之一是包括许多其他的食谱,build立一个jenkinsCI环境。 Iam想知道其他人是如何testing包括的recepies。 我的“_spec.rb”在这一刻看起来像这样(例如testing,包括jenkins大师): it 'includes the `jenkins` recipe' do expect(chef_run).to include_recipe('jenkins::master') end 现在覆盖率下降了,因为我没有testing包含的食谱(他们有自己的chefspectesting)。 如果有人有一个例子或好的想法…会很好。 好吧,find一个Issu,看起来这是我的CodeCoverage的“问题” – 在Windows上的IAM: https : //github.com/sethvargo/chefspec/issues/594 在Ubuntu下同样的问题,没有OSXvalidation问题( – :

Nginx乘客轨道

在ubuntu 14.04的nginx / passenger / rails的EC2上有这个日志nginx: 应用程序31063 stderr: *错误* :不能执行/ usr / local / lib / ruby​​:权限被拒绝(13) App 31065 stderr:/etc/profile.d/rbenv.sh:line 3:rbenv:command not found nginx conf是: worker_processes 1; error_log logs/error.log; events { worker_connections 1024; } http { passenger_root /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.0.18; passenger_ruby /usr/local/lib/ruby; include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name teste.com; root […]

厨师:我如何增加一个ruby块的Mixlib :: ShellOut的CommandTimout?

我试图在一个基于Chef 11.10.4的客户端的Ubuntu 14.04系统上的厨师食谱中执行数据库数据加载。 我正在做一个ruby块的数据加载,这里是在日志中的错误的相关部分: Mixlib :: ShellOut ::的CommandTimeout 命令在600s后超时: 命令超过允许的执行时间,被TERM信号所杀死。 [2015-10-06T01:24:00 + 00:00]错误:ruby_block [加载数据集](chef-virtuoso :: load line 178)出现错误:Mixlib :: ShellOut :: CommandTimeout:600s后超时: 任何人都知道如何增加一个shell_out!的默认CommandTimeout为3600 shell_out! 在一个ruby块? 这里是从配方的ruby块是失败的: ::Chef::Recipe.send(:include, Chef::Mixin::ShellOut) ruby_block "Load Dataset" do block do shell_out!(DATA_LOAD_COMMAND) end end

在Windows关机期间优雅closuresruby进程

我有一个计划的ruby进程,每分钟运行一个Windows 2012 R2计算机 – 有时只有几秒钟后退出,其他时间,运行5分钟左右。 我试图实现的是能够closures机器,等待过程退出(如果正在运行), 然后再closures。 closures需要从外部启动(例如,通过AWS API调用)。 有没有办法做到这一点? 我尝试了一些不同的东西,但无济于事: 在Ruby代码中的Signal.trap(…) – 似乎没有信号发送到进程 一个本身调用Wait-Process的closures脚本 – 在这种情况下,我认为 ruby进程在closures脚本执行前被杀死。 我也看到有一种方法可以让windows程序挂接到特定的窗口事件(例如: CTRL_SHUTDOWN_EVENT )并返回值来说明是否继续closures,但是我怎么能够钩住在这个ruby进程中。 也许它可以包装在一些Windows程序来允许这个?