loco-rails-core 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1d631f46ff3610cc89a7346ce1418231724a0aabca82a82f36bebb8faa9b4a2
4
- data.tar.gz: 2e74c2c7fb88797ea0a68e969c6f5e25eab7b775dd8a593fc55c0d5691838ccb
3
+ metadata.gz: a1b9b27d3833f479412e2468bc55a09f807efd1da6d4c1e5bfd49d43759820c4
4
+ data.tar.gz: 3c01e866a531feb3809f809627f7560d5e3486e185c6c4a33e9c32285659a166
5
5
  SHA512:
6
- metadata.gz: 005ddaf32a115b3a553fd72e190ed69c0171f3c17f3c70675d93a227e14133c83571d73c8fcb932baf4a9715165967d4a2794b08d9727b4f1607016808224c5e
7
- data.tar.gz: 1ad4f5d5dbf597e4c72642323549c8b970a08de542739227eebc97987b2045944ab7b5248c2d4db64481ac683c53af4fd7a0c2ecc14d1254700aadbe73d3c08f
6
+ metadata.gz: 3209f52b8b481143698234bea1f5df5dba6588d274c9e6b13fe3e893337b135fcd1e4e1004965a6c857272a0132d19bbd338b167fbbb1eaac9a6d4f9046fac02
7
+ data.tar.gz: 040b754199dd232da1c98381bf702edd7c80c578ff008487a0debb55a21cab93924019370ad83070c16cea094a04b718dfabbc1461871073860a1ab3aff50853
data/README.md CHANGED
@@ -1,28 +1,87 @@
1
- # Loco::Core
2
- Short description and motivation.
1
+ ![logo](https://raw.githubusercontent.com/artofcodelabs/artofcodelabs.github.io/master/assets/ext/loco_logo_trans_sqr-300px.png)
3
2
 
4
- ## Usage
5
- How to use my plugin.
3
+ # 🧐 What is Loco-Rails-Core?
4
+
5
+ **Loco-Rails-Core** is a Rails plugin that has been extracted from [Loco-Rails](https://github.com/locoframework/loco-rails).
6
+ The reason for this extraction was to pull out the functionality that can be used as a stand-alone lib.
7
+ This functionality was the origin of the [Loco-Rails](https://github.com/locoframework/loco-rails) project.
8
+
9
+ I wanted to provide a logical structure for JavaScript code that would be corresponding with Rails` controllers and views.
10
+ The same controller's action would be called on the JavaScript level that renders a response for a given request on the [Rails](https://rubyonrails.org) side.
11
+ 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.
12
+
13
+ The **Loco-Rails-Core** by itself does not provide a lot of value. It has to be used with its JavaScript complementary library - [Loco-JS](https://github.com/locoframework/loco-js).
14
+ **Loco-Rails-Core**'s single generator adds `Loco::Core::Helpers` module to `ApplicationHelper`.
15
+ It also updates the `application.html.erb` layout by adding `data-*` attributes to HTML `<body>` element.
16
+ **Loco-Rails-Core** does this via methods defined in the aforementioned `Loco::Core::Helpers` module.
17
+
18
+ These attributes store the information about namespace, controller and action names involved in handing a given request.
19
+ [Loco-JS](https://github.com/locoframework/loco-js) looks at those attributes to call out method from the corresponding location but inside the JavaScript code.
20
+ In other words - [Loco-JS](https://github.com/locoframework/loco-js) will call a JavaScript controller's action with the same name and located inside the same namespace.
21
+
22
+ _Example:_
23
+
24
+ Given that the `index` action from `Main::PagesControllers` handles a given request.
25
+ `<body>`'s data attributes are gonna look like this:
26
+
27
+ ```html
28
+ <body data-namespace="Main" data-controller="Pages" data-action="index">
29
+ </body>
30
+ ```
31
+
32
+ **Loco-JS** will act in the similar fashion (simplified version):
33
+
34
+ ```javascript
35
+ import { Controllers } from "loco-js";
36
+
37
+ namespaceController = new Controllers.Main;
38
+ namespaceController.initialize();
39
+
40
+ controller = new Controllers.Main.Pages;
41
+ controller.initialize();
42
+ controller.index();
43
+ ```
44
+
45
+ If you don't define a namespace controlller - it will be skipped.
46
+ If you don't define an `initialize` or `index` actions - **Loco-JS** won't call them.
47
+ You can define a JavaScript counterparts only for those actions that you want to augment with JavaScript features.
48
+
49
+ **Loco-Rails-Core** is a good choice if you don't need all the features that [Loco-Rails](https://github.com/locoframework/loco-rails) provides.
50
+
51
+
52
+ # 📥 Installation
6
53
 
7
- ## Installation
8
54
  Add this line to your application's Gemfile:
9
55
 
10
56
  ```ruby
11
57
  gem 'loco-rails-core'
12
58
  ```
13
-
14
59
  And then execute:
60
+
15
61
  ```bash
16
62
  $ bundle
17
63
  ```
18
64
 
19
- Or install it yourself as:
65
+
66
+ # 🎮 Usage
67
+
20
68
  ```bash
21
- $ gem install loco-rails-core
69
+ $ bin/rails generate loco:core:file_injector
22
70
  ```
23
71
 
24
- ## Contributing
25
- Contribution directions go here.
26
72
 
27
- ## License
73
+ # 👩🏽‍🔬 Tests
74
+
75
+ ```bash
76
+ $ bin/test
77
+ ```
78
+
79
+
80
+ # 📜 License
81
+
28
82
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
83
+
84
+
85
+ # 👨‍🏭 Author
86
+
87
+ Zbigniew Humeniuk from [Art of Code](https://artofcode.co)
@@ -4,7 +4,7 @@ module Loco
4
4
  module Core
5
5
  class FileInjectorGenerator < Rails::Generators::Base
6
6
  def application_helper
7
- file_path = Rails.root.join 'app', 'helpers', 'application_helper.rb'
7
+ file_path = Rails.root.join('app/helpers/application_helper.rb')
8
8
  line = %( include Loco::Core::Helpers\n)
9
9
  inject_into_file file_path, line, after: "module ApplicationHelper\n"
10
10
  end
@@ -19,12 +19,7 @@ module Loco
19
19
  end
20
20
 
21
21
  def layout_path
22
- Rails.root.join(
23
- 'app',
24
- 'views',
25
- 'layouts',
26
- 'application.html.erb'
27
- )
22
+ Rails.root.join('app/views/layouts/application.html.erb')
28
23
  end
29
24
  end
30
25
  end
@@ -8,9 +8,7 @@ module Loco
8
8
  {
9
9
  'data-namespace' => namespace_name,
10
10
  'data-controller' => data_controller,
11
- 'data-action' => action_name,
12
- 'data-rails-env' => Rails.env,
13
- 'data-user-agent' => request.user_agent
11
+ 'data-action' => action_name
14
12
  }
15
13
  end
16
14
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Loco
4
4
  module Core
5
- VERSION = '0.1.1'
5
+ VERSION = '0.2.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loco-rails-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zbigniew Humeniuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-06 00:00:00.000000000 Z
11
+ date: 2020-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -94,7 +94,7 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '3.142'
97
- description: It enhances the layout body element with attributes that contain information
97
+ description: It enhances layout's body element with attributes containing information
98
98
  about the current namespace, controller and action.
99
99
  email:
100
100
  - hello@artofcode.co
@@ -130,8 +130,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  requirements: []
133
- rubygems_version: 3.0.3
133
+ rubygems_version: 3.1.2
134
134
  signing_key:
135
135
  specification_version: 4
136
- summary: Core part of the Loco framework
136
+ summary: The core part of the Loco framework. It needs Loco-JS to work.
137
137
  test_files: []