Forum: Ruby simple, simple stuff

B58c6eef325656d513d26e2c3ae6bfd9?d=identicon&s=25 Peter Bailey (peterbailey)
on 2013-12-17 18:12
Hello,
I just rebuilt my Mac, with Ruby. I'm getting these what I think are
very primitive errors when I try to run one of my scripts locally.

pb4072imac:~ peterbailey$ checkorca dy3242g1
/scripts/checkorca.rb: line 2: require: command not found
/scripts/checkorca.rb: line 4: require: command not found
/scripts/checkorca.rb: line 6: orcafile: command not found
host: couldn't get address for 'http://ps2000-graphics-prod.bna.com':
not found
/scripts/checkorca.rb: line 10: clnt: command not found
/scripts/checkorca.rb: line 11: syntax error near unexpected token
`nil,'
/scripts/checkorca.rb: line 11: `clnt.set_auth(nil, 'production',
'prod')'

What is it complaining about "require?" Yeh, I've got "require" there at
the top. But, I need it there.
And, why can't it find the address of that URL?


Thanks,
Peter
E088bb5c80fd3c4fd02c2020cdacbaf0?d=identicon&s=25 "Jesús Gabriel y Galán" <jgabrielygalan@gmail.com> (Guest)
on 2013-12-17 18:17
(Received via mailing list)
On Tue, Dec 17, 2013 at 6:12 PM, Peter Bailey <lists@ruby-forum.com>
wrote:
> /scripts/checkorca.rb: line 10: clnt: command not found
> /scripts/checkorca.rb: line 11: syntax error near unexpected token
> `nil,'
> /scripts/checkorca.rb: line 11: `clnt.set_auth(nil, 'production',
> 'prod')'
>
> What is it complaining about "require?" Yeh, I've got "require" there at
> the top. But, I need it there.
> And, why can't it find the address of that URL?

Hi,

I don't work with a Mac, so take this with a grain of salt: it looks
like instead of running the script with the Ruby interpreter you are
running it as if it were a shell script, hence all the "command not
found" errors, cause the shell can't find those commands. Do you have
an appropriate shebang line (not sure how that would look like in a
Mac):

something like:

#!/bin/env ruby

Otherwise you could try calling ruby directly:

$ ruby checkorca.rb dy3242g1

Jesus.
B58c6eef325656d513d26e2c3ae6bfd9?d=identicon&s=25 Peter Bailey (peterbailey)
on 2013-12-17 18:22
"Jesús Gabriel y Galán" <jgabrielygalan@gmail.com> wrote in post
#1130870:
> On Tue, Dec 17, 2013 at 6:12 PM, Peter Bailey <lists@ruby-forum.com>
> wrote:
>> /scripts/checkorca.rb: line 10: clnt: command not found
>> /scripts/checkorca.rb: line 11: syntax error near unexpected token
>> `nil,'
>> /scripts/checkorca.rb: line 11: `clnt.set_auth(nil, 'production',
>> 'prod')'
>>
>> What is it complaining about "require?" Yeh, I've got "require" there at
>> the top. But, I need it there.
>> And, why can't it find the address of that URL?
>
> Hi,
>
> I don't work with a Mac, so take this with a grain of salt: it looks
> like instead of running the script with the Ruby interpreter you are
> running it as if it were a shell script, hence all the "command not
> found" errors, cause the shell can't find those commands. Do you have
> an appropriate shebang line (not sure how that would look like in a
> Mac):
>
> something like:
>
> #!/bin/env ruby
>
> Otherwise you could try calling ruby directly:
>
> $ ruby checkorca.rb dy3242g1
>
> Jesus.


Thanks, Jesus. I checked my script and I do have the shebang there.
Thanks, anyway.
Aa082c8b00a50928e5860dcd70bf2368?d=identicon&s=25 tamouse m. (tamouse_m)
on 2013-12-17 19:45
(Received via mailing list)
On Tue, Dec 17, 2013 at 11:22 AM, Peter Bailey <lists@ruby-forum.com>
wrote:

> >> What is it complaining about "require?" Yeh, I've got "require" there at
> > Mac):
>
>
> Thanks, Jesus. I checked my script and I do have the shebang there.
> Thanks, anyway.
>
> --
> Posted via http://www.ruby-forum.com/.
>

It might help if you pasted the script.
B58c6eef325656d513d26e2c3ae6bfd9?d=identicon&s=25 Peter Bailey (peterbailey)
on 2013-12-17 19:58
tamouse m. wrote in post #1130882:
> On Tue, Dec 17, 2013 at 11:22 AM, Peter Bailey <lists@ruby-forum.com>
> wrote:
>
>> >> What is it complaining about "require?" Yeh, I've got "require" there at
>> > Mac):
>>
>>
>> Thanks, Jesus. I checked my script and I do have the shebang there.
>> Thanks, anyway.
>>
>> --
>> Posted via http://www.ruby-forum.com/.
>>
>
> It might help if you pasted the script.

Uh, it's pretty big. But, here it is. Thanks.

#/Users/peterbailey/.rbenv/shims/ruby
require 'rubygems'
#noinspection RubyResolve
require 'httpclient'

orcafile    = ARGV[0]

host      = 'http://ps2000-graphics-prod.bna.com'
#noinspection RubyResolve
clnt      = HTTPClient.new
clnt.set_auth(nil, 'production', 'prod')

#Find PNG on Orca
format      = 'png'
url = URI.parse("#{host}/images/view/#{format}/#{orcafile}")
pngfile     = orcafile + '.png'
  response = clnt.head(url)
#noinspection RubyResolve
if HTTP::Status.successful?(response.status)
    puts "#{pngfile} is on Orca.\n"
  else
    puts "#{pngfile} is NOT on Orca.\n"
  end

#Find PDF on Orca
format      = 'pdf'
url = URI.parse("#{host}/images/view/#{format}/#{orcafile}")
pdffile     = orcafile + '.pdf'
  response = clnt.head(url)
#noinspection RubyResolve
if HTTP::Status.successful?(response.status)
    puts "#{pdffile} is on Orca.\n"
  else
    puts "#{pdffile} is NOT on Orca.\n"
  end

#Find TIFF on Orca
format      = 'tiff'
url = URI.parse("#{host}/images/view/#{format}/#{orcafile}")
tifffile     = orcafile + '.tif'
  response = clnt.head(url)
#noinspection RubyResolve
if HTTP::Status.successful?(response.status)
    puts "#{tifffile} is on Orca.\n"
  else
    puts "#{tifffile} is NOT on Orca.\n"
  end

#Find GIF on Orca
format      = 'gif'
url = URI.parse("#{host}/images/view/#{format}/#{orcafile}")
giffile     = orcafile + '.gif'
  response = clnt.head(url)
#noinspection RubyResolve
if HTTP::Status.successful?(response.status)
    puts "#{giffile} is on Orca.\n"
  else
    puts "#{giffile} is NOT on Orca.\n"
  end


#Find EPS on Orca
format      = 'eps'
url = URI.parse("#{host}/images/view/#{format}/#{orcafile}")
epsfile     = orcafile + '.eps'
  response = clnt.head(url)
#noinspection RubyResolve
if HTTP::Status.successful?(response.status)
    puts "#{epsfile} is on Orca.\n"
  else
    puts "#{epsfile} is NOT on Orca.\n"
  end

puts "\n"

#PS2000 Files
orcafile  = File.basename(orcafile, '.*')

if orcafile.match(/^ehs-/)
  exit
end

if File.exist?("/volumes/graphics/artrefpdf_color/master/#{orcafile}")
  filetime =
File.stat("/volumes/graphics/artrefpdf_color/master/#{orcafile}").mtime
  filedirectory  = '/volumes/graphics/artrefpdf_color/master/'
  filetime = filetime.to_s.gsub(/ -0[0-9]00/, '')
  puts "#{orcafile} is in the Color PS2k image library at:
  DIRECTORY    #{filedirectory}\n  DATED      #{filetime}\n"
end
#
#
if File.exist?("/volumes/graphics/images_9/master/#{orcafile}")
  filetime =
File.stat("/volumes/graphics/images_9/master/#{orcafile}").mtime
  filedirectory  = '/volumes/graphics/images_9/master/'
  filetime = filetime.to_s.gsub(/ -0[0-9]00/, '')
  #noinspection RubyResolve,RubyResolve,RubyResolve
  puts "#{orcafile} is in the regular PS2K image library at:
  DIRECTORY    #{filedirectory}\n  DATED      #{filetime}."
elsif File.exist?("/volumes/graphics/images_8/master/#{orcafile}")
  filetime =
File.stat("/volumes/graphics/images_8/master/#{orcafile}").mtime
  filedirectory  = '/volumes/graphics/images_8/master/'
  filetime = filetime.to_s.gsub(/ -0[0-9]00/, '')
  puts "#{orcafile} is in the regular PS2K image library at:
DIRECTORY    #{filedirectory}\n  DATED      #{filetime}\n"
elsif File.exist?("/volumes/graphics/images_7/master/#{orcafile}")
  filetime =
File.stat("/volumes/graphics/images_7/master/#{orcafile}").mtime
  filedirectory  = '/volumes/graphics/images_7/master/'
  filetime = filetime.to_s.gsub(/ -0[0-9]00/, '')
  puts "#{orcafile} is in the regular PS2K image library at:
  DIRECTORY    #{filedirectory}\n  DATED      #{filetime}\n"
elsif File.exist?("/volumes/graphics/images_6/master/#{orcafile}")
  filetime =
File.stat("/volumes/graphics/images_6/master/#{orcafile}").mtime
  filedirectory  = '/volumes/graphics/images_6/master/'
  filetime = filetime.to_s.gsub(/ -0[0-9]00/, '')
  puts "#{orcafile} is in the regular PS2K image library at:
  DIRECTORY    #{filedirectory}\n  DATED      #{filetime}\n"
elsif File.exist?("/volumes/graphics/images_5/master/#{orcafile}")
  filetime =
File.stat("/volumes/graphics/images_5/master/#{orcafile}").mtime
  filedirectory  = '/volumes/graphics/images_5/master/'
  filetime = filetime.to_s.gsub(/ -0[0-9]00/, '')
  puts "#{orcafile} is in the regular PS2K image library at:
  DIRECTORY    #{filedirectory}\n  DATED      #{filetime}\n"
elsif File.exist?("/volumes/graphics/images_4/master/#{orcafile}")
  filetime =
File.stat("/volumes/graphics/images_4/master/#{orcafile}").mtime
  filedirectory  = '/volumes/graphics/images_4/master/'
  filetime = filetime.to_s.gsub(/ -0[0-9]00/, '')
  puts "#{orcafile} is in the regular PS2K image library at:
  DIRECTORY    #{filedirectory}\n  DATED      #{filetime}\n"
elsif File.exist?("/volumes/graphics/images_3/master/#{orcafile}")
  filetime =
File.stat("/volumes/graphics/images_3/master/#{orcafile}").mtime
  filedirectory  = '/volumes/graphics/images_3/master/'
  filetime = filetime.to_s.gsub(/ -0[0-9]00/, '')
  puts "#{orcafile} is in the regular PS2K image library at:
  DIRECTORY    #{filedirectory}\n  DATED      #{filetime}\n"
elsif File.exist?("/volumes/graphics/images_2/master/#{orcafile}")
  filetime =
File.stat("/volumes/graphics/images_2/master/#{orcafile}").mtime
  filedirectory  = '/volumes/graphics/images_2/master/'
  filetime = filetime.to_s.gsub(/ -0[0-9]00/, '')
  puts "#{orcafile} is in the regular PS2K image library at:
  DIRECTORY    #{filedirectory}\n  DATED      #{filetime}\n"
elsif File.exist?("/volumes/graphics/images_1/master/#{orcafile}")
  filetime =
File.stat("/volumes/graphics/images_1/master/#{orcafile}").mtime
  filedirectory  = '/volumes/graphics/images_1/master/'
  filetime = filetime.to_s.gsub(/ -0[0-9]00/, '')
  puts "#{orcafile} is in the regular PS2K image library at:
  DIRECTORY    #{filedirectory}\n  DATED      #{filetime}\n"
else
  puts "The file is not in the ps2000 image library. It's probably for a
web-only service."
end
723b4e622e19f86d4e8cd09dfbae2f01?d=identicon&s=25 Jacob V. (jacob_v)
on 2013-12-17 20:23
Do you need the 'bang' - ! - in your shebang?

#!/ vs. #/

(I use Windows.)
B58c6eef325656d513d26e2c3ae6bfd9?d=identicon&s=25 Peter Bailey (peterbailey)
on 2013-12-17 21:22
Jacob V. wrote in post #1130886:
> Do you need the 'bang' - ! - in your shebang?
>
> #!/ vs. #/
>
> (I use Windows.)

I tried it with the screamer (!), but, I still get the same results.

If I run the script like this in my Mac shell, I'm alright.

  ruby checkorca.rb dy3242g1

Normally, I run it like this:

   checkorca dy3242g1

because, I have a simple script in my scripts directory called
"checkorca" that simply calls out the Ruby script.

If I run this, it doesn't run either.

  checkorca.rb dy3242g1

It's like there's some disconnect with Ruby itself, or, at least, the
Ruby version I'm running. I used rbenv to install my Ruby.
Aa082c8b00a50928e5860dcd70bf2368?d=identicon&s=25 tamouse m. (tamouse_m)
on 2013-12-18 07:06
(Received via mailing list)
On Tue, Dec 17, 2013 at 12:58 PM, Peter Bailey <lists@ruby-forum.com>
wrote:

> >> Thanks, anyway.
> >>
> >> --
> >> Posted via http://www.ruby-forum.com/.
> >>
> >
> > It might help if you pasted the script.
>
> Uh, it's pretty big. But, here it is. Thanks.
>
>
Thanks -- it's not *that* long, but I guess I could have asked for the
head
of the file instead... :))


> #/Users/peterbailey/.rbenv/shims/ruby
>

It should be:

#!/Users/peterbailey/.rbenv/shims/ruby

if you actually do have a shim for ruby at that exact path. Type that at
the Terminal prompt to see.

This is what I use to start scripts:

#!/usr/bin/env ruby

and it picks up which ruby to run based upon the user's environment,
which
defaults to the system ruby.
920f6e4a0fbf997d851455f827a10ebc?d=identicon&s=25 unknown (Guest)
on 2013-12-18 12:47
(Received via mailing list)
Are you pointing to the ruby directory or the executable, you need to
point to the ruby executable?
Should it maybe be:
#!/Users/peterbailey/.rbenv/shims/ruby/bin/ruby


>From:  tamouse pontiki <tamouse.lists@gmail.com>
>To:    ruby-talk ML <ruby-talk@ruby-lang.org>
>Date:  12/18/2013 01:06 AM
>Subject:       Re: simple, simple stuff
>Sent by:       "ruby-talk" <ruby-talk-bounces@ruby-lang.org>
>
>
>On Tue, Dec 17, 2013 at 12:58 PM, Peter Bailey <lists@ruby-forum.com>
wrote:
>tamouse m. wrote in post #1130882:
>> On Tue, Dec 17, 2013 at 11:22 AM, Peter Bailey <lists@ruby-forum.com>
>> wrote:
>>
>>> >> What is it complaining about "require?" Yeh, I've got "require"
there at
>> It might help if you pasted the script.
>
>Uh, it's pretty big. But, here it is. Thanks.
>
>
>Thanks -- it's not *that* long, but I guess I could have asked for the
head of the file instead... :))
>
>#/Users/peterbailey/.rbenv/shims/ruby
>
>It should be:
>
>#!/Users/peterbailey/.rbenv/shims/ruby
>
>if you actually do have a shim for ruby at that exact path. Type that at
the Terminal prompt to see.
>
>This is what I use to start scripts:
>
>#!/usr/bin/env ruby
>
>and it picks up which ruby to run based upon the user's environment,
which defaults to the system ruby.
2ffac40f8a985a2b2749244b8a1c4161?d=identicon&s=25 Mike Stok (Guest)
on 2013-12-18 13:31
(Received via mailing list)
On Dec 18, 2013, at 1:05 AM, tamouse pontiki <tamouse.lists@gmail.com>
wrote:

> >>
> Uh, it's pretty big. But, here it is. Thanks.
> if you actually do have a shim for ruby at that exact path. Type that at the
Terminal prompt to see.
One way to determine which ruby a particular shell will pick up is to
use the which command, for example:

ratdog:~ mike$ which ruby
/Users/mike/.rbenv/shims/ruby

Is that the same as the interpreter specified in the #! line?

To see if the interpreter in your #! line exists, you can check by using
ls, for example on my system I would do:

ratdog:~ mike$ ls  -l /Users/mike/.rbenv/shims/ruby
-rwxr-xr-x  7 mike  501  408 28 Oct 13:18 /Users/mike/.rbenv/shims/ruby

If it does exist then I would check that the script is executable, and
that there are no invisible characters at the end of the #! line
(usually this happens when a file comes from windows to a unix-like
environment and what looks like ruby at the end of the line is really
ruby\r)

One way to "repair" this might be to use

which ruby

then delete the top line of the file, enter #!, and then copy and paste
the output of which ruby into the file.

In general I prefer #!/usr/bin/env ruby to hard coding a path because it
lets me switch between rbenv and rvm and not have to update all my
scripts  having the .rbenv/shims in there explicitly couples your script
to the detail of how you currently install ruby.

Hope this helps,

Mike



>
> This is what I use to start scripts:
>
> #!/usr/bin/env ruby
>
> and it picks up which ruby to run based upon the user's environment, which
defaults to the system ruby.
>
>

--

Mike Stok <mike@stok.ca>
http://www.stok.ca/~mike/

The "`Stok' disclaimers" apply.
B58c6eef325656d513d26e2c3ae6bfd9?d=identicon&s=25 Peter Bailey (peterbailey)
on 2013-12-19 15:41
unknown wrote in post #1130962:
> Are you pointing to the ruby directory or the executable, you need to
> point to the ruby executable?
> Should it maybe be:
> #!/Users/peterbailey/.rbenv/shims/ruby/bin/ruby
>
>
>>From:  tamouse pontiki <tamouse.lists@gmail.com>
>>To:    ruby-talk ML <ruby-talk@ruby-lang.org>
>>Date:  12/18/2013 01:06 AM
>>Subject:       Re: simple, simple stuff
>>Sent by:       "ruby-talk" <ruby-talk-bounces@ruby-lang.org>
>>
>>
>>On Tue, Dec 17, 2013 at 12:58 PM, Peter Bailey <lists@ruby-forum.com>
> wrote:
>>tamouse m. wrote in post #1130882:
>>> On Tue, Dec 17, 2013 at 11:22 AM, Peter Bailey <lists@ruby-forum.com>
>>> wrote:
>>>
>>>> >> What is it complaining about "require?" Yeh, I've got "require"
> there at
>>> It might help if you pasted the script.
>>
>>Uh, it's pretty big. But, here it is. Thanks.
>>
>>
>>Thanks -- it's not *that* long, but I guess I could have asked for the
> head of the file instead... :))
>>
>>#/Users/peterbailey/.rbenv/shims/ruby
>>
>>It should be:
>>
>>#!/Users/peterbailey/.rbenv/shims/ruby
>>
>>if you actually do have a shim for ruby at that exact path. Type that at
> the Terminal prompt to see.
>>
>>This is what I use to start scripts:
>>
>>#!/usr/bin/env ruby
>>
>>and it picks up which ruby to run based upon the user's environment,
> which defaults to the system ruby.


My shebank looks just like you suggest:
#!/Users/peterbailey/.rbenv/shims/ruby

If I were to use "#!/usr/bin/env ruby, would that still let me use the
latest Ruby that's in /users/peterbailey/.rbenv/shims/ruby ??

If so, then, yeh, I'll do that.

Thanks!
Aa082c8b00a50928e5860dcd70bf2368?d=identicon&s=25 tamouse m. (tamouse_m)
on 2013-12-21 05:01
(Received via mailing list)
On Thu, Dec 19, 2013 at 8:41 AM, Peter Bailey <lists@ruby-forum.com>
wrote:
>
>
If what you have for your shebang matches exactly what you get when you
type `which ruby` at the command line, that should work. If you want to
try
out the other, you can also type that exactly at the command line.

This is mine:

$ which ruby
/opt/rubies/ruby-2.0.0-p247/bin/ruby

$ /opt/rubies/ruby-2.0.0-p247/bin/ruby --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.5.0]

$ /usr/bin/env ruby --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.5.0]
I happen to be using chruby, but rbenv and rvm will work the same if it
is
set up correctly, as will the system ruby. Chruby sets and exports the
following into the shell environment (which is what /usr/bin/env picks
up
for the shebang command):

GEM_HOME=/Users/tamara/.gem/ruby/2.0.0
GEM_PATH=/Users/tamara/.gem/ruby/2.0.0:/opt/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0
GEM_ROOT=/opt/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0
RUBYOPT=
RUBY_ENGINE=ruby
RUBY_ROOT=/opt/rubies/ruby-2.0.0-p247
RUBY_VERSION=2.0.0
You should be able to find the same env vars with settings appropriate
to
your setup.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.