loco-rails-core 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: []