Training, Open Source Programming Languages

This is page http://www.wellho.net/mouth/2609_.html

Our email: info@wellho.net • Phone: 01144 1225 708225

 
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
Scope of variables - important to Ruby on Rails

Yesterday's Ruby on Rails training day brought home just how important it is to ensure that your Ruby variables are correctly "scoped" - that you tell Ruby if they're to be local to the method in which they are defined, to be available to all methods that run on the same objects, to all objects of a particular type, or throughout your entire program. You specify the different Ruby variable types by preceeding the variable name with appopriate characters - @, @@, $ or no special character at all.

stuff - a local variable
@stuff - an object variable (one per object)
@@stuff - a class variable (just one for a whole class of objects)
$stuff - a global variable (just one for the program)


There's a further writeup on our web site [here] including diagrams, and the full Ruby on Rails sample application where it was so important can be found [here]. I have also added an example which show each of the scope types to our directory of examples - it's [here].

Why is this scoping so important in Rails?

It's because Ruby on Rails uses ApplicationController classes (and subclasses thereof) to link in data from the model and pass it through to a view; variables that do not start with an @ or a $ aren't going to be visible to the viewer, whereas variables that do start with one of those characters will be.

Furthermore, if you have multiple application controller classes (as you're likely to do if you have a complex set of tables relating to different parts of a large application, looked after by a team of programmers), you need to be aware that common code / dynamic object variables are going to be best placed in the base ApplicationController class for sharing, whereas dynamic object variables that are specific to views of certain parts of the model only are best in the subclasses of the overall application controller.

In the example that's on our web site, where we are only managing two joined tables, we only have a single application controller subclass where we have chose to put all the logic - you can see that code [here]. The base class for common controller code is just an empty container that passed on the inheritance from the basic class that's supplied with the Ruby on Rails framework - you can see that (automatically generated, not altered by us in this case) file [here]

(written 2010-01-31)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
R202 - Ruby on Rails
  [1050] The HTML++ Metalanguage - (2007-01-22)
  [1302] Ruby, Ruby, Ruby. Rails, Rails, Rails. - (2007-08-13)
  [1375] Python v Ruby - (2007-10-02)
  [1745] Moodle, Drupal, Django (and Rails) - (2008-08-08)
  [2605] Ruby on Rails - a sample application to teach you how - (2010-01-30)
  [2607] Answers on Ruby on Rails - (2010-01-30)
  [3624] Why do we need a Model, View, Controller architecture? - (2012-02-25)
  [3756] Ruby on Rails - how it flows, and where the files go - (2012-06-08)
  [3772] Hello World - Ruby on Rails - a checklist of each step - (2012-06-22)
  [3777] Multiple views in a single appication - sharing common parts of the template - Ruby on Rails - (2012-06-23)
  [3778] Providing a form to allow the user to add data to the model - Ruby on Rails - (2012-06-23)
  [3779] Adding validation to form entries and sticky fields - Ruby on Rails - (2012-06-23)
  [3780] Ruby of Rails - cleanly displaying model data in the view - (2012-06-23)
  [3919] What is a web framework? - (2012-11-10)
  [4010] Really Simple Rails - (2013-02-17)
  [4013] Web Frameworks - nested templates - (2013-02-22)

R105 - Ruby - Classes and Objects
  [983] Blessing in Perl / Member variable in Ruby - (2006-12-14)
  [1925] Introduction to Object Oriented Programming - (2008-12-06)
  [2292] Object Orientation in Ruby - intermediate examples - (2009-07-16)
  [2603] Ruby objects - a primer - (2010-01-29)
  [2616] Defining a static method - Java, Python and Ruby - (2010-02-01)
  [2651] Calculation within objects - early, last minute, or cached? - (2010-02-26)
  [3421] Ruby off the Rails? - (2011-09-06)
  [4009] Clear, concise examples - Ruby classes and objects. - (2013-02-17)
  [4502] Reading and parsing a JSON object in Ruby - (2015-06-01)


Back to
Search and replace in Ruby - Ruby Regular Expressions
Previous and next
or
Horse's mouth home
Forward to
Cheat Sheet - what do you need for Ruby on Rails?
Some other Articles
Constants in Ruby
The Model, View, Controller architecture (MVC) - what, why and how.
Sunday Evening, City of London
Cheat Sheet - what do you need for Ruby on Rails?
Scope of variables - important to Ruby on Rails
Search and replace in Ruby - Ruby Regular Expressions
Sorting arrays and hashes in Ruby
Tips for writing a test program (Ruby / Python / Java)
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).

© WELL HOUSE CONSULTANTS LTD., 2024: 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/2609_.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb