On Sun, Sep 23, 2012 at 6:29 PM, S Ahmed <sahmed1...@gmail.com> wrote:
> I have a simple require call that is failing with:
> ruby mycar.rb
> /Users/me/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/cus tom_require.rb:36:in
> `require': cannot load such file -- mycar/car (LoadError)
> from
> /Users/me/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/cus tom_require.rb:36:in
> `require'
> from mycar.rb:1:in `<main>'
> My file layout is:
> mycar.rb
> mycar/car.rb
> mycar.rb looks like:
> require 'mycar/car'
> car.rb looks like:
> modle MyCar
> class Car
> end
> end
> Why isn't this working, getting frustrated :(
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-talk+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
> Hi. There is a typo, the correct is Module MyCar
> and try doing this: require './mycar/car'
> On Sun, Sep 23, 2012 at 6:29 PM, S Ahmed <sahmed1...@gmail.com> wrote:
>> I have a simple require call that is failing with:
>> ruby mycar.rb
>> /Users/me/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/cus tom_require.rb:36:in
>> `require': cannot load such file -- mycar/car (LoadError)
>> from
>> /Users/me/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/cus tom_require.rb:36:in
>> `require'
>> from mycar.rb:1:in `<main>'
>> My file layout is:
>> mycar.rb
>> mycar/car.rb
>> mycar.rb looks like:
>> require 'mycar/car'
>> car.rb looks like:
>> modle MyCar
>> class Car
>> end
>> end
>> Why isn't this working, getting frustrated :(
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Ruby on Rails: Talk" group.
>> To post to this group, send email to rubyonrails-talk@googlegroups.com.
>> To unsubscribe from this group, send email to
>> rubyonrails-talk+unsubscribe@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-talk+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
> require 'cancan/model_adapters/active_record_adapter' if defined? ActiveRecord
> require 'cancan/model_adapters/data_mapper_adapter' if defined? DataMapper
> require 'cancan/model_adapters/mongoid_adapter' if defined?(Mongoid) && defined?(Mongoid::Document)
> On Sun, Sep 23, 2012 at 5:42 PM, Everaldo Gomes <everaldo.go...@gmail.com>wrote:
>> Hi. There is a typo, the correct is Module MyCar
>> and try doing this: require './mycar/car'
>> On Sun, Sep 23, 2012 at 6:29 PM, S Ahmed <sahmed1...@gmail.com> wrote:
>>> I have a simple require call that is failing with:
>>> ruby mycar.rb
>>> /Users/me/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/cus tom_require.rb:36:in
>>> `require': cannot load such file -- mycar/car (LoadError)
>>> from
>>> /Users/me/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/cus tom_require.rb:36:in
>>> `require'
>>> from mycar.rb:1:in `<main>'
>>> My file layout is:
>>> mycar.rb
>>> mycar/car.rb
>>> mycar.rb looks like:
>>> require 'mycar/car'
>>> car.rb looks like:
>>> modle MyCar
>>> class Car
>>> end
>>> end
>>> Why isn't this working, getting frustrated :(
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Ruby on Rails: Talk" group.
>>> To post to this group, send email to rubyonrails-talk@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> rubyonrails-talk+unsubscribe@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Ruby on Rails: Talk" group.
>> To post to this group, send email to rubyonrails-talk@googlegroups.com.
>> To unsubscribe from this group, send email to
>> rubyonrails-talk+unsubscribe@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
> I've never seen that require in any gems on the web
That's because most of the time when you require something, it is a gem, and gems are installed in specific directories that ruby searches when you require something. You can see a list of the directories ruby searches when you require something by doing this:
p $LOAD_PATH
If one of those directories isn't your current directory, and you want to require a file in your current directory, then your require has to specify the path(absolute or relative) to the file.
On Sun, Sep 23, 2012 at 6:50 PM, 7stud -- <li...@ruby-forum.com> wrote:
> > I've never seen that require in any gems on the web
> That's because most of the time when you require something, it is a gem,
> and gems are installed in specific directories that ruby searches when
> you require something. You can see a list of the directories ruby
> searches when you require something by doing this:
> p $LOAD_PATH
> If one of those directories isn't your current directory, and you want
> to require a file in your current directory, then your require has to
> specify the path(absolute or relative) to the file.
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-talk+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
On Sun, Sep 23, 2012 at 6:50 PM, 7stud -- <li...@ruby-forum.com> wrote:
> > I've never seen that require in any gems on the web
> That's because most of the time when you require something, it is a gem,
> and gems are installed in specific directories that ruby searches when
> you require something. You can see a list of the directories ruby
> searches when you require something by doing this:
> p $LOAD_PATH
> If one of those directories isn't your current directory, and you want
> to require a file in your current directory, then your require has to
> specify the path(absolute or relative) to the file.
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-talk+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
> That's because most of the time when you require something, it is a gem,
> and gems are installed in specific directories that ruby searches when
> you require something. You can see a list of the directories ruby
> searches when you require something by doing this:
> p $LOAD_PATH
7Stud was very clear...
The gems are installed to a folder/directory that is in your environment
path.
So you won't see this in a gem, unless someone is unaware of what they are
doing, and it would also require you to run that specific gem in some
specific folder or directory.
> That's because most of the time when you require something, it is a gem,
>> and gems are installed in specific directories that ruby searches when
>> you require something. You can see a list of the directories ruby
>> searches when you require something by doing this:
>> p $LOAD_PATH
> 7Stud was very clear...
> The gems are installed to a folder/directory that is in your environment
> path.
> So you won't see this in a gem, unless someone is unaware of what they are
> doing, and it would also require you to run that specific gem in some
> specific folder or directory.
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-talk+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
On Sun, Sep 23, 2012 at 7:46 PM, S Ahmed <sahmed1...@gmail.com> wrote:
> I see what your saying.
> I guess what I am asking then is, when developing your own gem, say I am
> developing my gem on my Mac in:
> /Users/me/projects/ruby/gem/some_gem_name/
> So this means I have to somehow modify my load_path so that I can just
> require things like:
> require 'folder/file'
> And then when I publish my gem and users use my gem, things will just work
> since the gem is installed by default at a path that ruby will look in?
> How then do gem developers modify their path to have this work?
They don't. They usually end up using something that 7Stud also mentioned.
Which is to say require_relative or they add a relative path to the $PATH
variable in some way.
So they don't modify their path, they use the environment that will be
given, and take advantage of this.
You can also use the file itself... you will see many different examples of
this in different gems. For example, in Rails Admin, spec/spec_helper.rb
you will see require File.expand_path('../dummy_app/config/environment',
__FILE__)
This takes the relative location of that file and load it that way, and so
will not require it to know exactly where it was installed, but it can rely
on its own project structure.
In IRB go ahead and do that... >> File.expand_path('.') you will see what I
mean. From that piece of information, build your path as you need to
require things for your project.