
Security News
Risky Biz Podcast: Making Reachability Analysis Work in Real-World Codebases
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Loco-Rails-Core is a Rails plugin that has been extracted from Loco-Rails. The reason for this extraction was to pull out functionality that can be used as a stand-alone lib. This functionality was the origin of the Loco-Rails project.
I wanted to provide a logical structure for a JavaScript code that corresponds to Rails` controllers and views. The same controller's action that renders a response for a given request on the Rails side would be called on the JavaScript level. By "the same" - I mean action with the same name and defined in an (optionally namespaced) controller with the corresponding name as the one on the server-side.
The Loco-Rails-Core, by itself, does not provide a lot of value. It should be used with its JavaScript complementary library - Loco-JS-Core.
Loco-Rails-Core's single generator adds Loco::Core::Helpers
module to ApplicationHelper
.
It also updates the application.html.erb
layout by adding data-*
attributes to HTML <body>
element.
Loco-Rails-Core does this via methods defined in the mentioned above Loco::Core::Helpers
module.
These attributes store the information about the namespace, controller, and action names involved in handing a given request. Loco-JS-Core looks at these attributes to call out a method from the corresponding location but inside the JavaScript code. In other words - Loco-JS-Core calls a JavaScript controller's action with the same name and located inside the same namespace.
Example:
Given that the index
action from Main::PagesControllers
handles a given request.
<body>
's data attributes are gonna look like this:
<body data-namespace="Main" data-controller="Pages" data-action="index">
</body>
Loco-JS-Core will act similarly (simplified version):
// all JavaScript controllers are assigned to the Controllers object
namespaceController = new Controllers.Main;
namespaceController.initialize();
controller = new Controllers.Main.Pages;
controller.initialize();
controller.index();
If you don't define a namespace controller - it will be skipped.
If you don't define an initialize
or index
actions - Loco-JS-Core won't call them.
You can define JavaScript counterparts only for those actions that you want to augment with JavaScript features.
Loco-Rails-Core is the right choice if you don't need all features that Loco-Rails provides.
Add this line to your application's Gemfile:
gem 'loco-rails-core'
And then execute:
$ bundle
$ bin/rails generate loco:core:file_injector
$ bin/test
The gem is available as open source under the terms of the MIT License.
Zbigniew Humeniuk from Art of Code
FAQs
Unknown package
We found that loco-rails-core 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.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.