在Ruby on Windows 7上,如何从命令行打开程序的源文件?
示例:
def dev_mode
if ARGV[0] == '--dev-mode'
system('open test.rb')
end
end
是否可以使用用户计算机的默认编辑器打开程序?比如在记事本中打开它(如果用户没有编辑器)或用户用于源文件的编辑器?
答案 0 :(得分:2)
在Mac上,你已经到了一半; open
在默认应用程序中打开一个文件。默认情况下,它会打开一个合理的文本文件编辑器和Ruby文件的XCode;我没有在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
环境变量),您可能希望使用该值。这是许多程序使用的惯例。
我会让其他人为其他操作系统提供答案。
答案 1 :(得分:2)
使用关联程序打开文件的规范方法不同于一个操作系统(或shell)。以下是4个适用于指定操作系统的示例:
使用从Windows 95开始提供的标准命令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完全是另一个世界。
您可能最好只需要让用户拥有相关的程序,以便让事情变得容易入手。一旦在应用程序中使用了其他逻辑,您就可以在没有现有文件关联的情况下将有趣的功能(如回退)添加到默认应用程序中。