requiring a file is causing problems for me in Ruby 1.9.2 p0. This
issue did not happen in Ruby 1.8.7 p299.
Here is a ruby file hello_world.rb
→ cat hello_world.rb
require 'sinatra'
get '/' do
"Hello world #{params[:name]}".strip
end
In Ruby 1.8.7, I get into irb and type the following:
→ rvm use ruby-1.8.7-p299
info: Using ruby 1.8.7 p299
bruparel:~/temp/sin_test
→ irb
ruby-1.8.7-p299 > require 'rubygems'
=> true
ruby-1.8.7-p299 > require 'hello_world'
=> true
Now I switch to Ruby 1.9.2 as follows:
bruparel:~/temp/sin_test
→ rvm use ruby-1.9.2-p0
info: Using ruby 1.9.2 p0
bruparel:~/temp/sin_test
→ irb
ruby-1.9.2-p0 > require 'rubygems'
=> true
ruby-1.9.2-p0 > require 'hello_world'
LoadError: no such file to load -- hello_world
from <internal:lib/rubygems/custom_require>:29:in `require'
from <internal:lib/rubygems/custom_require>:29:in `require'
from (irb):2
from /home/bruparel/.rvm/rubies/ruby-1.9.2-p0/bin/irb:17:in `<main>'
However, if I issue a slightly different require command at irb prompt
as shown below:
ruby-1.9.2-p0 > require './hello_world'
=> true
Then it works!
But this is causing all the "old" Ruby 1.8.x programs to break. Is
there an environment setting in Ruby 1.9.2 that will restore the old
behavior?
Bharat
···
--
Posted via http://www.ruby-forum.com/.
requiring a file is causing problems for me in Ruby 1.9.2 p0. This
issue did not happen in Ruby 1.8.7 p299.
http://www.ruby-lang.org/en/news/2010/08/18/ruby-1-9-2-is-released/
"$: no longer includes the current directory."
That means "." is not included and thus you can't require things in
the same folder (is a security measure)
info: Using ruby 1.9.2 p0
bruparel:~/temp/sin_test
→ irb
ruby-1.9.2-p0 > require 'rubygems'
=> true
ruby-1.9.2-p0 > require 'hello_world'
LoadError: no such file to load -- hello_world
from <internal:lib/rubygems/custom_require>:29:in `require'
from <internal:lib/rubygems/custom_require>:29:in `require'
from (irb):2
from /home/bruparel/.rvm/rubies/ruby-1.9.2-p0/bin/irb:17:in `<main>'
However, if I issue a slightly different require command at irb prompt
as shown below:
ruby-1.9.2-p0 > require './hello_world'
=> true
Then it works!
But this is causing all the "old" Ruby 1.8.x programs to break. Is
there an environment setting in Ruby 1.9.2 that will restore the old
behavior?
severals:
ruby -I. my_script.rb
require_relative 'hello_world'
or play with $: adding the current directory which I would recommend
not to.
···
On Oct 16, 7:31 pm, Bharat Ruparel <bcrupa...@yahoo.com> wrote:
--
Luis Lavena
Thanks Luis. I did some reading on Sinatra/rack-testing plus Ruby 1.9.2
upgrade. I was really trying to get tests to work in my Sinatra
application. I was successful in being able to run the tests. Here is
how:
I have a file called sharpener.rb in my project base directory. I
created a test directory and a file called test_shortener.rb in it.
Here is a snippet of require statements in it:
require 'rubygems'
require 'sinatra'
require 'test/unit'
require 'rack/test'
require File.join(Dir.pwd, 'shortener')
ENV['RACK_ENV'] = 'test'
class TestShortener < Test::Unit::TestCase
....
end
Note that I am running the tests from the base directory as follows:
ruby test/test_shortener.rb
It works fine.
I am curious though. How is including the current directory in the path
a security risk?
Appreciate your time.
Bharat
···
--
Posted via http://www.ruby-forum.com/.