Rails require external ruby file containing configuration variables at runtime (variable name)-Collection of common programming errors

When exporting my data to Excel, I prompt the user to select his export template.

Each export template should be a separate (ruby) file that contains several parameters.

I tried to “require” my file after selects it from a drop-down list but the variables that the ruby file contains are not accessible.

What is the best solution to include a ruby file at runtime, depending on the previous user’s choice ?

The goal is to include different set of parameters at runtime

My code :

Class ExportController < ApplicationController
...
def step3
    filepath = params[:template][:filepath]
    if File.exists?(file=File.join(Rails.root, filepath))
        logger.debug ("-----------> File FOUND : "+file.to_s)    
                     # This gives:  File FOUND : D:/Rails/test1/lib/export/test2.rb
        require file
    else
        logger.debug ("-----------> File not found !!")
    end

end

File test2.rb :

@test = "Hello world"

In the view :


gives nothing… 🙁

  1. I thing that what you need to do is call eval on the file’s content.

    It’s not a very good idea though… It evaluates ruby code runtime.

    Ex (in a rails console):

    >eval('@test = 450')
    >  450
    >@test
    >  450
    
  2. I am not sure this would be going to resolve your problem. But as per What I understand is you need to generate template dynamically for your excel export. I suggest you to have a look of ERB templating. In this you will find how you can generate templates dynamically then you can render them in rails.

    Hope I have understood correctly and this answer will help you.

  3. Finally, I chose to import a configuration file coded in YAML. This seems the best way to import variables depending on a user’s choice (load a different yaml file at runtime)