Tag: shell

使用传递变量从rails上的ruby执行shell脚本

我试图将韵律xmpp服务器与我的rails应用程序集成。 我需要在注册时在数据库中创建一些用户,这样我才能在韵律服务器中使用它们。 在rails中运行shell命令并输出任何信息日志的最佳方法是什么? prosodyctl adduser User.username

为什么bash -l -c“CMD”让ruby找到我的gem?

在我的ruby脚本中,我需要gmail gem: require ‘rubygems’ require ‘gmail’ 在shell中运行时,它可以正常工作: ruby my-script.rb 当我把它放在一个cron作业时,它无法执行: * * * * * cd /to/script/directory;/usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby ./my-script.rb 日志显示无法加载gmail gem: /usr/local/rvm/rubies/ree-1.8.7-2011.03/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require’: no such file to load — gmail (LoadError) 好吧,当我这样做时(把cmd放在bash -l -c’CMD’中): * * * * * /bin/bash -l -c ‘cd /to/script/directory;/usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby ./my-script.rb’ 它再次正常工作。 为什么? ps.I知道arg -l使bash成为登录shell,但这有什么不同吗?

如何在Aptana Studio 3.0.9中使用bundle exec来运行调试器?

Aptana似乎从sh shell开始。 所以我试图切换到zsh ,并执行命令来启动rails应用程序。 我已经更改了我的调试可执行文件,以便它运行带有以下内容的unix可执行文件: #!/usr/bin/env ruby exec(“zsh | (echo $SHELL && [[ -s ‘$HOME/.rvm/scripts/rvm’ ]] && source ‘$HOME/.rvm/scripts/rvm’ && rvm use 1.8.7@tinderbox && (bundle exec script/server -p3001 &))”) 因此,当我从工具栏上的调试菜单中单击我的调试可执行文件时,会出现调试透视图,并显示它 myApp [Ruby Application] Ruby /usr/bin/ruby 正在运行但尚未终止。 但当我进入我的浏览器并输入0.0.0.0:3001时,我得到“哎呀!谷歌Chrome无法连接到localhost:3001” – 这意味着服务器无法运行。 我将可执行文件的输出设置为我桌面上的文件,这是每次运行时发生的事情: Fast Debugger (ruby-debug-ide 0.4.16, ruby-debug-base 0.10.4) listens on 127.0.0.1:55306 /bin/zsh 注意:我使用bash和zsh获得相同的结果 到底是怎么回事? 以及如何让我的命令工作?

rails控制器在使用shell脚本运行casperjs测试用例时返回nil响应

我正在使用带有rails应用程序的casper测试用例,用于运行测试用例我正在使用以下命令。 result = `cd #{Rails.root.join}/casper && casperjs test #{params[:file]}.js` 上面提到的代码在开发环境(webrick)上工作得很好但是如果我在staging(nginx + passenger)上运行它,那么我在几秒钟内得到nil响应意味着脚本是异步运行的,我需要同步运行它以便我可以向客户端发送JSON响应。 我用来提供响应的方法如下。 def test @result = `cd #{Rails.root.join}/casper && casperjs test #{params[:file]}.js` render json: JSON.parse(@result) end

如何在Rake任务中执行命令?

我在rails应用程序中有rake任务。 我想在rake任务中运行命令行命令。 我怎样才能做到这一点。 我试过以下但失败了 desc “Sending the newsletter to all the users” task :sending_mail do run “cd #{RAILS_ROOT} && ar_sendmail -o -t NewsLetters -v” system “cd #{RAILS_ROOT} && ar_sendmail -o -t NewsLetters -v &” end 上面的run命令抛出run method undefined&System命令没有抛出任何错误但没有执行。

如何在网页中动态显示ping输出?

作为诊断页面的一部分,我希望用户能够运行“ping”,即普通的shell命令将ICMP_ECHO_REQUST发送到某个IP,并在浏览器的div中动态显示结果。 后端是Ruby / Rails。 我过去在服务器端运行命令并从ping命令读取输出。 我一直在构建网页,定期回调服务器动态更新页面的部分内容。 但在这种情况下,有三个挑战: 能够将ajax调用回uri / url以查找运行ping命令的进程 理想情况下,当ping命令返回新的数据行时,能够更新页面 可选择能够“打破”ping。 使用ping我当然可以设置选项只发送x ping然后退出,从而消除了停止进程的需要。 但是我还有另一个工具,它将是下一个日志查看器,并且该工具在一定数量的行之后不会自行停止,但如果没有中断则继续,即使用Control-C。 我是否使用运行ping的进程设置了一个memcache来进行渲染,或者是否有更简单的方法? 我搜索了很多想,这应该是一个常见的问题,有一个rails插件只是神奇地实现了所需的,但我没有找到太多。 有什么建议或指示?

部署期间Capistrano’Bundle Not Found’错误

当我运行cap deploy:update我得到下面的错误,表明找不到bundle 。 当我从cap shell运行echo $PATH ,缺少包含bundle的/var/lib/gems/1.9.1/bin路径,但是这个路径在/etc/profile和~/.bashrc 。 有谁知道如何解决这个问题? [192.168.10.100] executing command *** [err :: 192.168.10.100] sh: *** [err :: 192.168.10.100] bundle: not found *** [err :: 192.168.10.100] command finished in 25ms failed: “sh -c ‘bundle install –gemfile /data/www/apps/my_app/releases/201104 04163717/Gemfile –path /data/www/apps/my_apps/shared/bundle –deployment –qui et –without development test'” on 192.168.10.100

是否可以编写连接到Heroku并运行Ruby命令的shell命令?

是否可以在OSX上编写以下脚本? heroku run console load ‘init.rb’ 以下不起作用: alias ‘heroku_init=heroku run console; load “init.rb”‘ 看来shell必须等待Heroku控制台连接,或者需要一种方法将load命令发送到Heroku控制台而不是bash shell。

如何在ruby钩子中加载python文件?

我试图添加钩子来忽略在gitlab中提交的二进制文件,所以我在/opt/gitlab/embedded/service/gitlab-shell/lib添加了新的python(.py)钩子,我在/opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.rb加载了该文件/opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.rb 但是当我尝试提交文件时,我在提交屏幕中得到了以下exception remote:hooks / pre-receive:17:in require_relative’: cannot load such file — /opt/gitlab/embedded/service/gitlab-shell/lib/gitlab_ignore_binary.py (LoadError) remote: from hooks/pre-receive:17:in ‘ 我的预接收挂钩文件是 #!/opt/gitlab/embedded/bin/ruby # Fix the PATH so that gitlab-shell can find git-upload-pack and friends. ENV[‘PATH’] = ‘/opt/gitlab/bin:/opt/gitlab/embedded/bin:’ + ENV[‘PATH’] #!/usr/bin/env ruby #!/usr/bin/env python # This file was placed here by GitLab. It makes sure that your pushed commits […]

仅当从ruby脚本运行时,Bash for循环才会出现语法错误

我有一个Ruby脚本,可以编排许多其他脚本。 其中一个bash脚本从服务器中提取日志数据,然后ruby脚本会解析它们。 我的bash脚本看起来像这样: #pullLogs.sh for ((x = $2; x <= $3; x++)); do # creates a subdirectory for each server number rsync –progress -rvze ssh name@$ARCHIVE_SERVER:/path/to/log/$logDate.gz $x/ done for ((x = $2; x <= $3; x++)); do cd $x for z in *.gz; do gunzip $z; done cd .. done cd .. 此脚本的作用是从指定的服务器中提取给定日期的日志。 通常有十个服务器,因此脚本将从服务器1拉出,然后从服务器2拉出等等。 如果我从命令行指定所需的日期,则此脚本可以正常工作 […]