How to share variables across my .rb files?

I have few .rb files and I want to use the same variables in all of them. Let's say variable test_variable = "test" would be accessible from all my .rb files. How can I do that?

I created settings.rb file with test_variable = "test" then used require 'settings' in other .rb file but it didn't work. I would like to use require not load.

I tried to make the variable global adding prefix $ in front of the variable name but I am still getting undefined local variable or method 'test_variable' for main:Object (NameError)

Answers


  1. Constants (which include modules and classes) are added to the shared global environment:

    phrogz$ cat constants1.rb 
    TEST_VARIABLE = "test"
    
    phrogz$ cat constants2.rb 
    require_relative 'constants1'
    p TEST_VARIABLE
    
    phrogz$ ruby constants2.rb 
    "test"
    
  2. Instance variables declared in main are all part of the same main:

    phrogz$ cat instance1.rb 
    @test_variable = "test"
    
    phrogz$ cat instance2.rb 
    require_relative 'instance1'
    p @test_variable
    
    phrogz$ ruby instance2.rb 
    "test"
    
  3. Global variables are also all part of the same environment (tested in 1.8.6, 1.8.7, and 1.9.2):

    phrogz$ cat global1.rb 
    $test_variable = "test"
    
    phrogz$ cat global2.rb 
    require_relative 'global1'
    p $test_variable, RUBY_DESCRIPTION
    
    phrogz$ ruby global2.rb 
    "test"
    "ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0]"
    

Need Your Help

Permuting numpy's 2d array indexes

python arrays numpy multidimensional-array

are there any numpy function or clever use of views to accomplish what the following function do?

How to conditionally join a table?

sql stored-procedures join full-text-search

I am implementing a searching mechanism in a website and stumbled upon the SQL aspect of it.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.