Socket
Book a DemoInstallSign in
Socket

loco-rails-core

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

loco-rails-core

0.3.0
bundlerRubygems
Version published
Maintainers
1
Created
Source

logo

🧐 What is Loco-Rails-Core?

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.

📥 Installation

Add this line to your application's Gemfile:

gem 'loco-rails-core'

And then execute:

$ bundle

🎮 Usage

$ bin/rails generate loco:core:file_injector

👩🏽‍🔬 Tests

$ bin/test

📜 License

The gem is available as open source under the terms of the MIT License.

👨‍🏭 Author

Zbigniew Humeniuk from Art of Code

FAQs

Package last updated on 29 Feb 2024

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.