草庐IT

shell脚本入门——流程控制

全部标签

ruby - 如何确定我的流程是否正在交互式运行?

是否有一种标准(ish)POSIX方法来确定我的进程(我现在正在将其编写为Ruby脚本;但我对多种环境感到好奇,包括Node.js和ISOC命令行应用程序)正在交互式终端中运行,而不是cron,或者从其他工具执行,或者……等等。具体来说,我需要在某些情况下获取用户输入,如果确定不可能(即由cron运行),我需要致命失败。我可以使用环境变量来做到这一点,但如果可以的话,我更喜欢更标准的东西。 最佳答案 我一直使用$stdout.isatty来检查这一点。其他方法可能包括检查ENV['TERM']的值或利用ruby-terminfoge

ruby - 用 Prawn 控制内容流

假设我们要在占据页面上半部分的第一页上显示一个标题。页面的下半部分应该填满我们的文章文本,文本应该继续流入后续页面直到用完:这是一个非常基本的布局场景,但我不明白如何在Prawn中实现它。这是从他们的在线文档中派生的一些示例代码:pdf=Prawn::Document.newdotext"ThePrince",:align=>:center,:size=>48text"NiccolòMachiavelli",:align=>:center,:size=>20move_down42column_box([0,cursor],:columns=>3,:width=>bounds.width

ruby-on-rails - 控制 Rails 中使用的 ruby​​ 版本

我有一个使用Rails3.0.6的应用程序,它在两台机器上运行。我从ruby​​1.8.7开始,最近安装了ruby​​1.9。我将“/usr/bin/ruby”中的链接交换为指向1.9安装。当我运行“ruby--version”时,我得到了1.9。但是,在我的Rails应用程序中,当我检查“RUBY_PLATFORM”时,它显示Rails正在运行1.8.7。如何告诉Rails使用哪个ruby​​环境?奇怪的是,这并不是最容易搜索的东西。可能是因为我对它的了解还不够多,无法形成一个具体的问题。 最佳答案 https://rvm.io/

ruby-on-rails - 在 Rails 中从控制台调用 ApplicationController 方法

在Rails中,假设文件已经加载,如何从控制台调用此示例中的my_method?#some_file.rbclassMyClass 最佳答案 另一种非常简单的方法是使用ApplicationController本身的实例。ApplicationController然后在控制台中,您可以执行以下操作:>>ApplicationController.new.example这将输出以下内容:OHAI当然,这有一个限制,即不能访问正常请求的所有内容,例如request对象本身。如果您需要这个,正如PatrickKlingemann所建议的那

ruby-on-rails - Rails - 在 Rails 控制台中,当您保存并得到 false 时,您如何找出原因?

在Rails控制台中,我正在创建一条记录,然后输入@record.save,我得到的结果是false,但我不明白为什么?RailsC有没有办法输出保存失败的原因?谢谢 最佳答案 通过errors实例方法访问错误。示例:ruby-1.8.7-p334:001>c=Company.new=>#ruby-1.8.7-p334:002>c.save=>falseruby-1.8.7-p334:003>c.errors=>#["can'tbeblank"]}> 关于ruby-on-rails-Ra

ruby - 在 Ruby 中形成卫生 shell 命令或系统调用

我正在构建一个守护进程来帮助我管理我的服务器。Webmin工作正常,就像打开服务器的shell一样,但我更希望能够从我设计的UI控制服务器操作,并向最终用户公开一些功能。守护进程将从队列中获取Action并执行它们。但是,由于我将接受用户的输入,我想确保不允许他们将危险的东西注入(inject)到特权shell命令中。这里有一个片段可以说明我的问题:defperformsystem"usermod-p#{@options['shadow']}#{@options['username']}"end解释更多的要点:https://gist.github.com/773292我不确定典型的输

ruby - 在控制台中打印 ASCII 旋转 "cursor"

我有一个Ruby脚本可以执行一些耗时较长的工作。它只是命令行,我想证明脚本仍在运行并且没有停止。我以前喜欢所谓的“旋转光标”,我设法在Windows下用Ruby重现了它。问题:这在其他操作系统中是否有效?如果没有,是否有独立于操作系统的方法来完成此任务?请不要使用IRB解决方案。10.times{print"/"sleep(0.1)print"\b"print"-"sleep(0.1)print"\b"print"\\"sleep(0.1)print"\b"print"|"sleep(0.1)print"\b"} 最佳答案 是的,这

ruby - CSV 到 JSON Ruby 脚本?

有谁知道如何编写将csv文件转换为json文件的Ruby脚本?CSV格式如下:Canon,DigitalIXUS70,"Epic,Epic100",3x,Yes(lockable),Yes(lockable),YesCanon,DigitalIXUS75,"Epic,Epic100",3x,Yes(lockable),Yes(lockable),YesCanon,DigitalIXUS80,"Epic,Epic100",3x,Yes(lockable),Yes(lockable),YesJSON需要产生这样的结果:{"aaData":[["Canon","DigitalIXUS70",

ruby - 包含模块时 __callee__ 的意外值——这是 Ruby 错误吗?

当通过alias_method创建的方法调用时,__callee__忽略旧方法的名称(此处为xxx)并返回新方法,如下:classFoodefxxx()__callee__endalias_method:foo,:xxxendFoo.new.foo#=>:foo即使xxx是从父类(superclass)继承的,这种行为仍然存在:classSupdefxxx()__callee__endendclassBar:bar鉴于以上两者,我希望当通过模块包含xxx时,同样的行为会发生。然而,事实并非如此:moduleModdefxxx()__callee__endendclassBazinclu

ruby-on-rails - 在 Ruby 或 Ruby on Rails 中使用异常控制流是一种好习惯吗?

我正在阅读使用Rails进行敏捷Web开发(第4版),我发现了以下代码classApplicationController由于我是一名Java开发人员,我对那部分代码的理解大致如下:privateCartcurrentCard(){try{returnCartManager.get_cart_from_session(cartId)}catch(RecordNotFoundExe){Cartc=CartManager.create_cart_and_add_to_session(newCart())returnc;}}令我印象深刻的是,异常处理用于控制正常的应用程序流程(当用户首次访问