Tag: 命令行界面

如何使用rspec测试CLI的stdin

我正在制作一个小型的Ruby程序,无法弄清楚如何编写模拟多个用户命令行输入的RSpec规范(function本身可行)。 我认为这个StackOverflow的答案可能涵盖了最接近我的地方,但这并不是我需要的。 我使用Thor作为命令行界面,但我不认为这是Thor的任何问题。 程序可以从文件或命令行读取命令,并且我已经能够成功编写测试以读取执行它们。 这是一些代码: cli.rb class CLI ” while line = gets break if line =~ /EXIT/i yield [line] print “> ” end end end # .. end 我已经成功测试了使用以下代码执行文件中包含的命令: 投机/ cli_spec.rb describe CLI do let(:cli) { CLI.new } subject { cli } describe “executing instructions from a file” do let(:default_file) { “instructions.txt” } let(:output) […]

Rails 3 Cli执行命令真的很慢?

有人知道为什么我的rails 3.0.7 cli这么慢? 当我运行rails s或rails g它需要5秒才能实际执行命令… 任何建议? 谢谢

如何设置Commander gem default命令?

我正在使用Commander gem编写一个小型控制台实用程序。 我想在用户未指定任何内容时设置默认命令。 我找到了如何通过API: Commander::Runner.instance.default_command(:gui) 但我认为会有一种更简单,更直接的方式。 我只是找不到使用互联网搜索。

RVM不断向我的PATH添加目录,然后抛出警告未正确设置PATH

我知道还有很多其他问题可以解决这个问题,但是我找不到任何适用于我的解决方案,所以我发帖以防万一我错过了什么。 使用命令行,当我进入Rails站点目录时,RVM通过在PATH变量的前面添加“Users / username / bin”来改变我的路径,然后它会抛出有关如何正确设置PATH的警告,因为因为rubygem版本不在PATH的第一位。 在更改为ROR目录之前,这是我的$ PATH输出: /Users/username/.rvm/gems/ruby-2.1.1/bin:/Users/username/.rvm/gems/ruby- 2.1.1@global/bin:/Users/username/.rvm/rubies/ruby2.1.1/bin:/Users/username/.nvm/v0.10.18/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki:/Users/username/.rvm/bin:/Users/username/.rvm/bin 将目录更改为ROR目录后: /Users/username/bin:/Users/username/.rvm/gems/ruby-2.1.1@rorproject/bin:/Users/username/.rvm/gems/ruby-2.1.1@global/bin:/Users/username/.rvm/rubies/ruby-2.1.1/bin:/Users/username/.rvm/bin:/Users/username/.nvm/v0.10.18/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki 我意识到RVM应该改变PATH变量,但为什么要在前面添加“Users / username / bin”? 这是我的.bashrc文件: [[ -s /Users/username/.nvm/nvm.sh ]] && . /Users/username/.nvm/nvm.sh # This loads NVM export PATH=”$PATH:$HOME/.rvm/bin” # Add RVM to PATH for scripting 这是我的.profile文件: export PATH=”$PATH:$HOME/.rvm/bin” # Add RVM to PATH for scripting 和.bash_profile文件: source ~/.profile if [ -f ~/.bashrc […]

是否有类似于C ++ std :: setw(int)函数的Ruby?

我正在向终端输出一些文本表,并希望能够使用类似C ++ std :: setw()函数的东西来为我的输出提供填充,而不是猜测所需的空格或制表符的数量。 在我去做一些事情之前,有没有一个function或Ruby Gem这样做? Std :: setw()适合那些需要一些蜘蛛网的人(像我一样) http://www.cplusplus.com/reference/iostream/manipulators/setw/ 我目前正在使用Ruby 1.8,因此最好使用与之兼容的解决方案。

无法安装gem(tar:无法连接到C:解析失败)

尝试安装gem时,我收到此错误: C:\WINDOWS\system32>gem install sqlint Temporarily enhancing PATH for MSYS/MINGW… Building native extensions. This could take a while… ERROR: Error installing sqlint: ERROR: Failed to build gem native extension. current directory: C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/pg_query-0.9.2/ext/pg_query C:/Ruby24-x64/bin/ruby.exe -r ./siteconf20170810-19576-j7fs2b.rb extconf.rb tar: Cannot connect to C: resolve failed *** extconf.rb failed *** Could not create Makefile due to some reason, probably […]

Ruby和Python如何实现他们的交互式控制台?

在为我的编程语言实现解释器时,我首先想到了一个简单的控制台窗口,它允许用户输入一些代码,然后作为shell独立程序执行。 但是存在严重的问题:如果用户输入的每一行代码都作为独立程序处理,它必须通过标记器和解析器,然后由解释器执行 – 那么函数呢? Python / Ruby交互式控制台(IDLE,irb)如何“共享”代码? 如何处理代码? 例: >> def x: >> print(“Blah”) >> >> x() 函数存储在哪里,以便可以在任何时候再次调用它? 交互式控制台如何将所有输入的内容视为一个程序,而不是一遍又一遍地执行所有操作?

在ruby中运行系统命令并与之交互

我需要在命令行上运行一个命令,要求用户响应。 万一它有助于命令是: gpg –recipient “Some Name” –encrypt ~/some_file.txt 当你运行它时,它警告某事然后问: 无论如何要使用此密钥? (Y / N) 回答’y’让它正确完成。 我一直在尝试使用open4 gem但我无法正确指定’y’。 这是我尝试过的: Open4::popen4(cmd) do |pid, stdin, stdout, stderr| stdin.puts “y” stdin.close puts “pid : #{ pid }” puts “stdout : #{ stdout.read.strip }” puts “stderr : #{ stderr.read.strip }” end 我究竟做错了什么? 我正在做什么甚至可能?

如何使用Trollop制作Ruby脚本进行命令行解析?

我最近开始使用Trollop ,这是一个干净而优雅的命令行选项解析器,适用于我所有基于Ruby的小型命令行黑客攻击。 我发现它很容易使用,但是入门很困难:尽管有良好的在线文档,但没有任何东西能够展示如何将Trollop整合到一个完整的脚本中。 问:如何将Trollop整合到我的Ruby命令行程序中?

如何在Ruby中转义终端的字符串?

我正在尝试启动mplayer。 我的文件名包含空格,这些应该被转义。 这是我正在使用的代码: @player_pid = fork do exec “/usr/bin/mplayer #{song.file}” end 其中#{song.file}包含类似”/home/example/music/01 – a song.mp3″ #{song.file} “/home/example/music/01 – a song.mp3″的路径。 如何正确地转义此变量(以及标题可能包含的其他可能的奇怪字符),以便终端接受我的命令?