Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Why is this simple require failing?
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  11 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
S Ahmed  
View profile  
 More options Sep 23 2012, 5:30 pm
From: S Ahmed <sahmed1...@gmail.com>
Date: Sun, 23 Sep 2012 17:29:32 -0400
Local: Sun, Sep 23 2012 5:29 pm
Subject: Why is this simple require failing?

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 must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Everaldo Gomes  
View profile  
 More options Sep 23 2012, 5:42 pm
From: Everaldo Gomes <everaldo.go...@gmail.com>
Date: Sun, 23 Sep 2012 18:42:11 -0300
Local: Sun, Sep 23 2012 5:42 pm
Subject: Re: [Rails] Why is this simple require failing?

Hi. There is a typo, the correct is Module MyCar

and try doing this: require './mycar/car'


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
S Ahmed  
View profile  
 More options Sep 23 2012, 5:46 pm
From: S Ahmed <sahmed1...@gmail.com>
Date: Sun, 23 Sep 2012 17:46:18 -0400
Local: Sun, Sep 23 2012 5:46 pm
Subject: Re: [Rails] Why is this simple require failing?

Why doesn't mine work, very confused??

I've never seen that require in any gems on the web thought?

https://github.com/ryanb/cancan/blob/master/lib/cancan.rb

require 'cancan/ability'
require 'cancan/rule'
require 'cancan/controller_resource'
require 'cancan/controller_additions'
require 'cancan/model_additions'
require 'cancan/exceptions'
require 'cancan/inherited_resource'

require 'cancan/model_adapters/abstract_adapter'
require 'cancan/model_adapters/default_adapter'
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:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
S Ahmed  
View profile  
 More options Sep 23 2012, 5:50 pm
From: S Ahmed <sahmed1...@gmail.com>
Date: Sun, 23 Sep 2012 17:49:18 -0400
Local: Sun, Sep 23 2012 5:49 pm
Subject: Re: [Rails] Why is this simple require failing?

Ok that made it work, but still doesn't make sense to me, there must be
something else wrong in my environment right?

Also to reference the class, I still needed to prefix the module name which
is also strange because I am requiring it!

Example:

require './mycar/car'

MyCar::Car.new  # this works
Car.new #didn't work


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
7stud --  
View profile  
 More options Sep 23 2012, 6:42 pm
From: 7stud -- <li...@ruby-forum.com>
Date: Mon, 24 Sep 2012 00:41:32 +0200
Local: Sun, Sep 23 2012 6:41 pm
Subject: Re: Why is this simple require failing?

> Also to reference the class, I still needed to prefix the module name
> which is also strange because I am requiring it!

Look up the difference between 'require' and 'include'.

--
Posted via http://www.ruby-forum.com/.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
7stud --  
View profile  
 More options Sep 23 2012, 6:51 pm
From: 7stud -- <li...@ruby-forum.com>
Date: Mon, 24 Sep 2012 00:50:38 +0200
Local: Sun, Sep 23 2012 6:50 pm
Subject: Re: Why is this simple require failing?

> 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.

require './your_file.rb'

--
Posted via http://www.ruby-forum.com/.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
S Ahmed  
View profile  
 More options Sep 23 2012, 7:25 pm
From: S Ahmed <sahmed1...@gmail.com>
Date: Sun, 23 Sep 2012 19:24:26 -0400
Local: Sun, Sep 23 2012 7:24 pm
Subject: Re: [Rails] Re: Why is this simple require failing?

so why didn't the file I linked to have to do that?  i.e. the cancan gem
require'ing its sub-directory files?


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
S Ahmed  
View profile  
 More options Sep 23 2012, 8:11 pm
From: S Ahmed <sahmed1...@gmail.com>
Date: Sun, 23 Sep 2012 20:10:35 -0400
Local: Sun, Sep 23 2012 8:10 pm
Subject: Re: [Rails] Re: Why is this simple require failing?

>>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

I think you misunderstood, I am saying I've never seen:

require './folder/file'

I ALWAYS see:

require 'folder/file'

For example:

https://github.com/ryanb/cancan/blob/master/lib/cancan.rb
https://github.com/Shopify/active_merchant/blob/master/lib/active_mer...

I just don't understand why mine isn't working the same way?  Did cancan
add something to the load path somewhere?


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Victor Goff  
View profile  
 More options Sep 23 2012, 8:23 pm
From: Victor Goff <keeperotpho...@gmail.com>
Date: Sun, 23 Sep 2012 19:22:02 -0500
Local: Sun, Sep 23 2012 8:22 pm
Subject: Re: [Rails] Re: Why is this simple require failing?

> 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 must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
S Ahmed  
View profile  
 More options Sep 23 2012, 8:47 pm
From: S Ahmed <sahmed1...@gmail.com>
Date: Sun, 23 Sep 2012 20:46:42 -0400
Local: Sun, Sep 23 2012 8:46 pm
Subject: Re: [Rails] Re: Why is this simple require failing?

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?

On Sun, Sep 23, 2012 at 8:22 PM, Victor Goff <keeperotpho...@gmail.com>wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Victor Goff  
View profile  
 More options Sep 23 2012, 10:17 pm
From: Victor Goff <keeperotpho...@gmail.com>
Date: Sun, 23 Sep 2012 21:15:12 -0500
Local: Sun, Sep 23 2012 10:15 pm
Subject: Re: [Rails] Re: Why is this simple require failing?

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.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »