Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8710315
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 13, 20262026-06-13T04:35:55+00:00 2026-06-13T04:35:55+00:00

I would like to load a theme for a cms I’m building.. I was

  • 0

I would like to load a theme for a cms I’m building.. I was thinking of having a file called name_of_theme.themespec .. I would load this.. similar to what Bundler dues with gemspecs.. I was thinking that inside this file I would have something like:

Theme.new do |t|
  t.value = 'hi'
end

I’d like to capture this theme instance after loading the script.. Should I just grab the contents of the file and eval them? This leads me to a follow up question is there any difference between loading a file.. and reading the contents and eval’ing.. I know that ‘eval’ is often considered to be the harbinger of destruction… maybe this use case is ok?

FOLLOW UP

Based on the selected answer.. why is it that I get:

evaluationContext = Fiber.new {$SAFE = 4; Fiber.yield binding}.resume
 => #<Binding:0x007f85fc8a0fc8> 
a = evaluationContext.eval('puts $SAFE')
=> 0
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-13T04:35:56+00:00Added an answer on June 13, 2026 at 4:35 am

    Well, there are a few differences, but if you’re already accepting external code, the gapping security hole is the same size with either eval or require. In this case, actually, eval might be more secure, because it can let you have control over the namespace and safe level at which the code executes. This is important, because, say, your app deals with someones email password. If you let the theme execute in the main namespace (require), it can do dastardly things like redefining Kernel#gets to log data to a malicious server, etc. Although it sounds far fetched, it’s better to be safe. SO here’s how you can do a secure load of this type:

    evaluationContext = Fiber.new {$SAFE = 4; Fiber.yield binding}.resume
    theme = evaluationContext.eval(File.read("GrayTheme.themespec"))
    

    Note: Any code called from the theme will be executed under $SAFE 4, so while for most things this is good (they can’t call system("rm -rf /")), fi there is any small amount of $SAFE 0 code that needs to be callable from the theme, the code has to be created in a lambda while you are still in safe level 0, and then passed to the code in safe level 4 (because lambdas retain their safe value).

    EDIT: Try replacing the eval line with this:

    theme = eval(File.read("blahblahba"), evaluationContext)
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I would like to load some data stored in a file into my mysql
$('#selector').click(function() { // here I would like to load a javascript file // let's
I would like to load a jsp file from a servlet-class I got in
I would like to load a new extension in a symfony2 project for twig
I would like to load a HTML document and modify it's text in PHP.
i would like to load xml into dataset with only 2 columns (name, price)
I have an assembly I would like to load from a sub-folder of the
I have requirement where some times I would like to load children as well
I have several PDF templates that I would like to load and modify and
I have a C# .Net 2.0CF application where I would like to load a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.