Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
An ActionView::Resolver implementation to store rails views (layouts, templates and partials) on database. Simply put: what you can do with views on filesystem, can be done on database.
NOTE: at the moment, only ActiveRecord is supported, I've planned to add more ORMs (see Todo). If you can't wait, adding other ORMs should be very trivial.
Add the following line to Gemfile:
gem "panoramic"
Your model should have the following fields:
they're what the rails' Resolver API needs to lookup templates.
A simple macro in model will activate your new Resolver. You can use a dedicated model to manage all the views in your app, or just for specific needs (ex: you want a custom template for some static pages, the other views will be fetched from filesystem).
class TemplateStorage < ActiveRecord::Base
store_templates
end
To add Panoramic::Resolver in controller, depending on your needs, you may choose:
NOTE: the above methods are both class and instance methods.
class SomeController < ApplicationController
prepend_view_path TemplateStorage.resolver
def index
# as you may already know, rails will serve 'some/index' template by default, but it doesn't care where it is stored.
end
def show
# explicit render
render :template => 'custom_template'
end
def custom_template
# use another model to fetch templates
prepend_view_path AnotherModel.resolver
end
end
And let's say you want to use database template resolving in all your controllers, but want to use panoramic only for certain paths (prefixed with X) you can use
class ApplicationController < ActionController::Base
prepend_view_path TemplateStorage.resolver(:only => 'use_this_prefix_only')
end
This helps reducing the number of database requests, if Rails for example tries to look for layouts per controller.
class MyEmail < ActionMailer::Base
prepend_view_path TemplateStorage.resolver
Need more help? Check out spec/dummy/
, you'll find a dummy rails app I used to make tests ;-)
Enter Panoramic gem path, run bundle install
to install development and test dependencies, then rake spec
.
Fork, make your changes, then send a pull request.
The main idea was heavily inspired from José Valim's awesome book Crafting Rails Applications. It helped me to better understand some Rails internals.
FAQs
Unknown package
We found that panoramic demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.