在默认编辑器中打开Ruby程序的源文件

时间:2016-05-10 17:29:28

标签: ruby windows

在Ruby on Windows 7上,如何从命令行打开程序的源文件?

示例:

def dev_mode
  if ARGV[0] == '--dev-mode'
    system('open test.rb')
  end
end

是否可以使用用户计算机的默认编辑器打开程序?比如在记事本中打开它(如果用户没有编辑器)或用户用于源文件的编辑器?

2 个答案:

答案 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}"}

Mac OS X

使用标准open命令:

system %{open "#{file_to_open}"}

Linux / Unix Gnome

使用Gnome实用程序gnome-open

system %{gnome-open "#{file_to_open}"}

的Linux / Unix

使用xdg-open实用程序:

system %{xdg-open "#{file_to_open}"}

相关程序

检测文件类型的关联程序在任何一个系统上都可能是一个相当高的顺序。例如,对于Windows,您必须检查注册表,而使用Mac OS X,您必须阅读正确的plist值; Linux完全是另一个世界。

您可能最好只需要让用户拥有相关的程序,以便让事情变得容易入手。一旦在应用程序中使用了其他逻辑,您就可以在没有现有文件关联的情况下将有趣的功能(如回退)添加到默认应用程序中。