在Windows 7上的Ruby中,如何从命令行打开程序的源文件?
例:
def dev_mode if ARGV[0] == '--dev-mode' system('open test.rb') end end
是否可以使用用户计算机的默认编辑器打开程序? 比如打开记事本(如果用户没有编辑器)或者用户使用源文件的编辑器?
使用关联的程序打开文件的规范方式与操作系统(或外壳)不同。 以下是可以在指定的操作系统上运行的4个示例:
使用从Windows 95 start
的标准命令shell start
:
system %{cmd /c "start #{file_to_open}"}
使用标准的open
命令:
system %{open "#{file_to_open}"}
使用GNOME实用程序gnome-open
:
system %{gnome-open "#{file_to_open}"}
使用xdg-open
实用程序:
system %{xdg-open "#{file_to_open}"}
在任何一个系统上检测文件类型的关联程序可能是相当高的顺序。 例如,在Windows中,您必须检查注册表,而在Mac OS X中,您必须阅读正确的plist值; Linux是一个完整的世界。
你可能更好,只需要用户有一个相关的程序,使事情变得简单就可以开始。 一旦你的应用程序中有其他的逻辑工作,你就可以在没有现有的文件关联的情况下,将有意思的功能添加到默认的应用程序中。
在Mac上,你已经在一半了; open
在默认应用程序中打开一个文件。 默认情况下,它将为文本文件和XCode for Ruby文件打开一个合理的编辑器; 我不会在XCode中编辑Ruby,但如果需要的话,我可以更改关联。
启动一个Ruby程序的文件名在$PROGRAM_NAME
,所以你可以这样做
def dev_mode if ARGV[0] == '--dev-mode' system("open #{$PROGRAM_NAME}") end end
在类Unix系统(包括OS X)上,如果已设置,则可能需要使用ENV['EDITOR']
( EDITOR
环境变量)的值。 这是许多程序使用的惯例。
我会让别人给其他操作系统的答案。