Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2021 - online Python 3 training - see ((here)).

Our plans were to retire in summer 2020 and see the world, but Coronavirus has lead us into a lot of lockdown programming in Python 3 and PHP 7.
We can now offer tailored online training - small groups, real tutors - works really well for groups of 4 to 14 delegates. Anywhere in the world; course language English.

Please ask about private 'maintenance' training for Python 2, Tcl, Perl, PHP, Lua, etc.
Where does Ruby load modules from, and how to load from current directory

All (scripting) languages allow you to load code from other supporting source files, using keywords like use, load, source and include. In Ruby, the most common way to load other code is to require it - and if you use the require method you'll load in code from another file which will be assumed to have a .rb extension.

But where is the extra code loaded from? And - more importantly - where do you want it loaded from?

Ruby looks for code it's asked to load in the directories listed in the $LOAD_PATH special variable (also known as $:) ... taking each of the directories in turn. There's a whole discussion on this variable and manipulating it on StackOverflow - [here].

Let's take a look at where the codes loaded from on my current system:

  WomanWithCat:kingston grahamellis$ irb
  irb(main):001:0> require "pp"
  => true
  irb(main):002:0> pp $:
  ["/Library/Ruby/Site/2.0.0",
   "/Library/Ruby/Site/2.0.0/x86_64-darwin13",
   "/Library/Ruby/Site/2.0.0/universal-darwin13",
   "/Library/Ruby/Site",
  "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby/2.0.0",
  "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby/2.0.0/x86_64-darwin13",
     "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby/2.0.0/universal-darwin13",
   "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby",
   "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0",
   "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/x86_64-darwin13",
   "/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13"]


Any you'll note that Ruby looks first in various local (site) directories, and then into a series of directories that are supplier specific, and finally into general directories. But it does NOT include the current directory, which can be an issue when you're developing and testing code.

You could add a check of your current directory onto the top of your program:
  $:.unshift File.dirname(__FILE__)
or (for something really quick and dirty) simply be specific in the require - here's a 'complete' program:
  require "./transport"
  p (Train.new 9,40,"09:45").getCapacity

Complete source of that (and sample output!) [here]. The cluster of classes that uses [here].
(written 2015-06-03)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
R108 - Ruby - More Classes and Objects
  [184] MTBF of coffee machines - (2005-01-20)
  [656] Think about your design even if you don't use full UML - (2006-03-24)
  [1217] What are factory and singleton classes? - (2007-06-04)
  [1587] Some Ruby programming examples from our course - (2008-03-21)
  [2292] Object Orientation in Ruby - intermediate examples - (2009-07-16)
  [2601] Ruby - is_a? v instance_of? - what is the difference? - (2010-01-27)
  [2603] Ruby objects - a primer - (2010-01-29)
  [2604] Tips for writing a test program (Ruby / Python / Java) - (2010-01-29)
  [2616] Defining a static method - Java, Python and Ruby - (2010-02-01)
  [2620] Direct access to object variable (attributes) in Ruby - (2010-02-02)
  [2623] Object Oriented Ruby - new examples - (2010-02-03)
  [2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
  [2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
  [2980] Ruby - examples of regular expressions, inheritance and polymorphism - (2010-10-02)
  [3142] Private and Public - and things between - (2011-01-22)
  [3154] Changing a class later on - Ruby - (2011-02-02)
  [3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
  [3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
  [3760] Why you should use objects even for short data manipulation programs in Ruby - (2012-06-10)
  [3781] Private, Protected, Public in Ruby. What about interfaces and abstract classes in Ruby? - (2012-06-23)
  [3782] Standard methods available on all objects in Ruby - (2012-06-23)
  [4366] Changing what operators do on objects - a comparison across different programming languages - (2014-12-26)
  [4550] Build up classes into applications sharing data types in Ruby - (2015-10-23)
  [4551] Testing your new class - first steps with cucumber - (2015-10-23)

R103 - Basic Ruby Language Elements
  [986] puts - opposite of chomp in Ruby - (2006-12-15)
  [2287] Learning to program in Ruby - examples of the programming basics - (2009-07-15)
  [2296] Variable scope - what is it, and how does it Ruby? - (2009-07-18)
  [2613] Constants in Ruby - (2010-02-01)
  [2617] Comparing floating point numbers - a word of caution and a solution - (2010-02-01)
  [3278] Do I need to initialise variables - programming in C, C++, Perl, PHP, Python, Ruby or Java. - (2011-05-05)
  [3430] Sigils - the characters on the start of variable names in Perl, Ruby and Fortran - (2011-09-10)
  [3758] Ruby - standard operators are overloaded. Perl - they are not - (2012-06-09)
  [3917] BODMAS - the order a computer evaluates arithmetic expressions - (2012-11-09)
  [4324] Learning to program - variables and constants - (2014-11-22)
  [4369] Ruby - the second rung of learning the language - (2014-12-28)

R104 - Ruby - Control Structures
  [960] 1st, 2nd, 3rd revisited in Ruby - (2006-12-02)
  [962] Breaking a loop - Ruby and other languages - (2006-12-03)
  [985] Equality in Ruby - == eql? and equal? - (2006-12-14)
  [995] Ruby's case - no break - (2006-12-17)
  [1163] A better alternative to cutting and pasting code - (2007-04-26)
  [1220] for loop - how it works (Perl, PHP, Java, C, etc) - (2007-06-06)
  [1582] Ruby, C, Java and more - getting out of loops - (2008-03-19)
  [1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
  [1738] Clean code, jump free (Example in Lua) - (2008-08-06)
  [1870] What to do with a huge crop of apples - (2008-11-04)
  [1887] Ruby Programming Course - Saturday and Sunday - (2008-11-16)
  [1891] Ruby to access web services - (2008-11-16)
  [1904] Ruby, Perl, Linux, MySQL - some training notes - (2008-11-23)
  [2471] A short form of if ... then ... else - (2009-10-23)
  [2619] Passing code to procedures and yield in Ruby - (2010-02-02)
  [2711] For loop - checked once, or evety time? Ruby v Perl comparison and contrast - (2010-04-07)
  [2892] Alternative loops and conditionals in Ruby and Perl - (2010-07-28)
  [2975] Why do I need brackets in Ruby ... or Perl, Python, C or Java - (2010-09-29)
  [3156] Splitting data reading code from data processing code - Ruby - (2011-02-04)
  [3159] Returning multiple values from a function call in various languages - a comparison - (2011-02-06)
  [3200] How a for loop works Java, Perl and other languages - (2011-03-12)
  [3253] Is this number between? Does this list include? - Ruby - (2011-04-18)
  [3254] Multiple inputs, multiple out, ruby functions - (2011-04-19)
  [3397] Does a for loop evaluate its end condition once, or on every iteration? - (2011-08-18)
  [3422] Assigning values to variables within other statements - Ruby - (2011-09-07)
  [3619] Ruby v Perl - a comparison example - (2012-02-21)
  [3620] Finding the total, average, minimum and maximum in a program - (2012-02-22)
  [3769] Muttable v immutable and implications - Ruby - (2012-06-20)
  [4322] Learning to Program - the conditional statement (if) - (2014-11-21)
  [4323] Learning to program - Loop statements such as while - (2014-11-22)
  [4370] Conditionals, loops and methods in Ruby - a primer with simple examples - (2014-12-29)
  [4402] Finding sum, minimum, maximum and average in Python (and Ruby) - (2015-01-19)
  [4503] Separating your code for easier testing, understanding and re-use; example in Ruby - (2015-06-02)
  [4674] Alternating valuses / flip-flop / toggle - example in Ruby - (2016-05-17)


Back to
Separating your code for easier testing, understanding and re-use; example in Ruby
Previous and next
or
Horse's mouth home
Forward to
Regular Expressions for the petrified - in Ruby
Some other Articles
Melksham to London by train - dont buy more than you need
In favour of adoption rather than puppy purchase - dogs!
Peak weekend - where there are still rooms near Melksham
Regular Expressions for the petrified - in Ruby
Where does Ruby load modules from, and how to load from current directory
Reading and parsing a JSON object in Ruby
Defining the behaviour of your web site and testing that it works
The TransWilts Community Intergrated Transport Corridor
Significant work - beyond helloworld in Ruby
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2021: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/4504_Whe ... ctory.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb