Search code examples
rubywindowscmdguardasciidoctor

Ruby on Windows: Require is not recognized as an internal or external command


I'm trying to use Guard to monitor changes in AsciiDoctor file. Here is Guardfile from official docs:

require 'asciidoctor'

guard 'shell' do
  watch(/^mydoc\.adoc$/) {|m|
    Asciidoctor.convert_file m[0]
  }
end

It works for me. But now, I'm trying to launch the same things without creating Guardfile - i.e. I want simply write these commands in Windows cmd.exe.

But when I write require 'asciidoctor' command prompt gives me an error:

'require' is not recognized as an internal or external command, operable program or batch file.

Well, I know that such error messages are often have something with Windows %Path% environment variable. But I don't understand how to fix it in this particular case.


Solution

  • Ruby and DOS Batch are two completely different programming languages that have absolutely nothing to do with each other. You simply cannot expect an interpreter for DOS Batch to be able to run Ruby code and vice versa. (Especially considering that Ruby didn't even exist when CMD.EXE was written, so how could CMD.EXE possibly know how to interpret Ruby code?)

    You need to run Ruby code in a Ruby interpreter (or use a Ruby compiler to compile it to something that you have an interpreter for).