rubyblok 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/README.md +33 -73
- data/lib/generators/rubyblok/hello_world_generator.rb +43 -0
- data/lib/generators/templates/hello_world_generator/_feature.html.erb +3 -0
- data/lib/generators/templates/hello_world_generator/_grid.html.erb +3 -0
- data/lib/generators/templates/hello_world_generator/_page.html.erb +1 -0
- data/lib/generators/templates/hello_world_generator/_teaser.html.erb +3 -0
- data/lib/generators/templates/hello_world_generator/controller.rb.erb +9 -0
- data/lib/generators/templates/hello_world_generator/index.html.erb +5 -0
- data/lib/generators/templates/hello_world_generator/styles.css +54 -0
- data/lib/rubyblok/mixins/model.rb +2 -0
- data/lib/rubyblok/mixins/webhook.rb +2 -0
- data/lib/rubyblok/version.rb +1 -1
- data/lib/rubyblok.rb +5 -5
- metadata +12 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 387e9c3d34367e3cbc2f7bd45bb3c38358e203e009f0d7a79f77c2f0569e590c
|
4
|
+
data.tar.gz: 13d329d7a0d6498124ee602b9252722051b4bf6f01e62186cc9c6b61fd26da69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 663185c2a74652136c644306457bb110d5c67290826f100e14c4e033e543f7db68bdb24b1f8d5843d78d20e32760ddc861b8f57abedba05cf9da73092f36041f
|
7
|
+
data.tar.gz: b2000c3d50bc5eef358a3b2cffc43cb2e980f89f63cf0b8a8acc7ac83bfc568e3b0440fd0029473a4f3ba792fd9e416d7e85164eafcc03a4677f81e0082239be
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
## [1.1.0] - 2024-05-02
|
6
|
+
|
7
|
+
### Added
|
8
|
+
- Hello world generator
|
9
|
+
|
10
|
+
## [1.0.0] - 2024-03-27
|
11
|
+
|
12
|
+
### Added
|
13
|
+
- Initial release
|
14
|
+
- Rubyblok helpers
|
15
|
+
- Config generator
|
16
|
+
- Model generator for caching Storyblok content
|
17
|
+
- Webhook controller generator for publishing Storyblok contents
|
data/README.md
CHANGED
@@ -18,15 +18,14 @@ In addition, Rubyblok provides an abstraction layer and stores all your content
|
|
18
18
|
|
19
19
|
## Installation
|
20
20
|
Rubyblok 1.0 works with Rails 6.0 onwards. Run:
|
21
|
-
```
|
21
|
+
```bash
|
22
22
|
bundle add rubyblok
|
23
23
|
```
|
24
24
|
|
25
|
-
### Storyblok account and
|
25
|
+
### Storyblok account and new space
|
26
|
+
[Click here](https://app.storyblok.com/#/signup) to create a free acount at Storyblok, the CMS platform where you will have access to the visual and real-time content editing.
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
Create a new Space, in _Spaces > Add Space_.
|
28
|
+
Create a new Space, in _My Spaces > Add Space_. Select the free Community plan by clicking its "Continue" button and give your space a name.
|
30
29
|
|
31
30
|
Get your Storyblok API token in your account, at _Storyblok Space > Settings > Access tokens_ page. Copy the "Preview" access level key.
|
32
31
|
|
@@ -43,88 +42,45 @@ STORYBLOK_WEBHOOK_SECRET=''
|
|
43
42
|
|
44
43
|
## Getting Started
|
45
44
|
|
46
|
-
###
|
47
|
-
|
45
|
+
### Necessary gems
|
46
|
+
You need to add some gems to your app for Rubyblok to work correctly. Run the following commands:
|
48
47
|
|
49
|
-
First, you need to run the install generator, which will create the initializer for you:
|
50
48
|
```bash
|
51
|
-
|
49
|
+
bundle add "storyblok"
|
50
|
+
bundle add "hash_dot"
|
51
|
+
bundle add "dotenv-rails"
|
52
52
|
```
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
rails db:migrate
|
59
|
-
```
|
54
|
+
### Hello world - Your first Rubyblok page
|
55
|
+
Let's get started with Rubyblok by creating your first page in three steps.
|
56
|
+
Note that it is important that you have your Storyblok space set up as described above, in the `Storyblok account and new space` section.
|
60
57
|
|
61
|
-
|
58
|
+
1. First, you need to run the install generator, which will create the initializer for you:
|
62
59
|
```bash
|
63
|
-
rails g rubyblok:
|
64
|
-
```
|
65
|
-
It also adds this line to your `routes.rb` file:
|
66
|
-
```
|
67
|
-
resources :storyblok_webhook, only: :create
|
60
|
+
rails g rubyblok:install
|
68
61
|
```
|
69
|
-
The Storyblok webhook is responsible for updating and deleting content in our local database in case of changes of content in Storyblok.
|
70
62
|
|
71
|
-
|
63
|
+
2. Now let's generate and run a migration to create the `pages` table and the `Page` model:
|
72
64
|
```bash
|
73
|
-
rails g
|
74
|
-
```
|
75
|
-
Add the following code to your home controller:
|
76
|
-
```
|
77
|
-
def index
|
78
|
-
response.headers['X-FRAME-OPTIONS'] = 'ALLOWALL'
|
79
|
-
end
|
80
|
-
```
|
81
|
-
|
82
|
-
Add this code to your app/views/home/index.html.erb file:
|
83
|
-
```
|
84
|
-
<%= rubyblok_story_tag('home') %>
|
85
|
-
```
|
86
|
-
Configure your `routes.rb` file to call the home controller. For example, adding this line:
|
87
|
-
```
|
88
|
-
root to: 'home#index'
|
89
|
-
```
|
65
|
+
rails g rubyblok:migration page
|
90
66
|
|
91
|
-
|
92
|
-
You can change the folder settings at the `rubyblok.rb` file as needed:
|
93
|
-
```
|
94
|
-
config.component_path = "shared/storyblok"
|
67
|
+
rails db:migrate
|
95
68
|
```
|
96
69
|
|
97
|
-
|
98
|
-
```
|
99
|
-
|
70
|
+
3. Finally, let's generate your first page:
|
71
|
+
```bash
|
72
|
+
rails g rubyblok:hello_world page
|
100
73
|
```
|
74
|
+
This will automatically create a new route, controller, views and styling for your hello world page.
|
101
75
|
|
102
|
-
|
76
|
+
For this example, go to the `rubyblok.rb` file and turn the caching option off:
|
103
77
|
```
|
104
|
-
|
105
|
-
<div>
|
106
|
-
<%= rubyblok_content_tag(blok.headline) %>
|
107
|
-
<%= rubyblok_content_tag(blok.subheadline) %>
|
108
|
-
</div>
|
109
|
-
</section>
|
78
|
+
config.cached = false
|
110
79
|
```
|
111
80
|
|
112
|
-
|
113
|
-
1. Once you're logged in, access your new space in the "My Spaces" section
|
114
|
-
2. Go to the "Content" section
|
115
|
-
3. Click the CTA "Create new" > Story
|
116
|
-
4. Name your story "Home", so it connects to our previous code. The content type is "Page".
|
117
|
-
5. Open your new story to start editing.
|
118
|
-
6. On the right side, you can add new blocks to your page. Create a new block by clicking the "+ Add Block" button.
|
119
|
-
7. This will open the Insert block section, then create the new "hero_section" block by typing its name in the search input.
|
120
|
-
8. Click the "Create new hero_section" CTA
|
121
|
-
9. Add the "headline" and "subheadline" text fields to the new Hero Section and save.
|
122
|
-
10. In your new Hero Section block, add any text you want to it.
|
123
|
-
11. Click the Publish button in the right top corner.
|
81
|
+
Now you have created your first Hello World page! Start your Rails server, access the '/pages' route and you will be able to see the page.
|
124
82
|
|
125
|
-
|
126
|
-
|
127
|
-
### Activate the visual editor
|
83
|
+
### Activate the visual editor
|
128
84
|
Here are the steps to configure the visual editor at Storyblok. This allows you to see a preview of your changes in the Storyblok interface as you edit and save.
|
129
85
|
|
130
86
|
At Storyblok, select your Space and go to _Settings > Visual Editor_.
|
@@ -155,6 +111,13 @@ This will start a proxy server.
|
|
155
111
|
|
156
112
|
By doing this initial setup, you are able to see your first Storyblok page inside your app and edit its content in the Storyblok admin interface 🎉
|
157
113
|
|
114
|
+
### Storyblok webhook
|
115
|
+
The Storyblok webhook will be responsible for updating and deleting content in the local database in case of changes. [Learn more here.](https://www.storyblok.com/docs/guide/in-depth/webhooks)
|
116
|
+
|
117
|
+
Generate the webhook controller:
|
118
|
+
```bash
|
119
|
+
rails g rubyblok:webhook_controller storyblok_webhook
|
120
|
+
```
|
158
121
|
|
159
122
|
## Rubyblok tags
|
160
123
|
|
@@ -199,8 +162,7 @@ Use this tag to render more than one component:
|
|
199
162
|
```
|
200
163
|
|
201
164
|
### Updating content manually at the caching layer
|
202
|
-
|
203
|
-
You can do the following in case you need to update the caching layer with some content that already exists in Storyblok:
|
165
|
+
In case you need to update the caching layer with new content added to Storyblok, run the following command:
|
204
166
|
```
|
205
167
|
# Slug: full_slug of the storyblok story
|
206
168
|
storyblok_story_content = Rubyblok::Services::GetStoryblokStory.call(slug: slug)
|
@@ -209,7 +171,6 @@ storyblok_story_content = Rubyblok::Services::GetStoryblokStory.call(slug: slug)
|
|
209
171
|
```
|
210
172
|
|
211
173
|
## How to Run Tests
|
212
|
-
|
213
174
|
You can run unit tests for RubyBlok with the following command:
|
214
175
|
```
|
215
176
|
bundle exec rspec
|
@@ -223,5 +184,4 @@ Issues should be used to report bugs, request a new feature, or to discuss poten
|
|
223
184
|
For any inquiries, reach out to us at: info@rubyblok.com
|
224
185
|
|
225
186
|
## License
|
226
|
-
|
227
187
|
RubyBlok is released under the MIT License.
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require "rails/generators"
|
2
|
+
|
3
|
+
module Rubyblok
|
4
|
+
module Generators
|
5
|
+
class HelloWorldGenerator < Rails::Generators::NamedBase
|
6
|
+
source_root File.expand_path("../templates", __dir__)
|
7
|
+
|
8
|
+
desc 'Generates a "Hello, world" Rubyblok page.'
|
9
|
+
|
10
|
+
def generate_hello_world
|
11
|
+
add_controller
|
12
|
+
add_route
|
13
|
+
copy_views
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def add_controller
|
19
|
+
template("hello_world_generator/controller.rb.erb", "app/controllers/#{plural_file_name}_controller.rb")
|
20
|
+
end
|
21
|
+
|
22
|
+
def add_route
|
23
|
+
insert_into_file("config/routes.rb", after: "Rails.application.routes.draw do") do
|
24
|
+
"\n get '/#{plural_file_name}' => '#{plural_file_name}#index'\n"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def copy_views
|
29
|
+
template("hello_world_generator/index.html.erb", "app/views/#{plural_file_name}/index.html.erb")
|
30
|
+
template("hello_world_generator/_feature.html.erb", "app/views/#{destination_partial_path}/_feature.html.erb")
|
31
|
+
template("hello_world_generator/_page.html.erb", "app/views/#{destination_partial_path}/_page.html.erb")
|
32
|
+
template("hello_world_generator/_grid.html.erb", "app/views/#{destination_partial_path}/_grid.html.erb")
|
33
|
+
template("hello_world_generator/_teaser.html.erb", "app/views/#{destination_partial_path}/_teaser.html.erb")
|
34
|
+
|
35
|
+
copy_file("hello_world_generator/styles.css", "app/assets/stylesheets/hello.css")
|
36
|
+
end
|
37
|
+
|
38
|
+
def destination_partial_path
|
39
|
+
@destination_partial_path ||= Rubyblok.configuration.component_path
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<%%= rubyblok_blocks_tag(blok.body) %>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
.page {
|
2
|
+
display: flex;
|
3
|
+
flex-direction: column;
|
4
|
+
align-items: center;
|
5
|
+
justify-content: center;
|
6
|
+
background: #FFF;
|
7
|
+
color: #1B243F;
|
8
|
+
width: 100%;
|
9
|
+
min-height: 100svh;
|
10
|
+
padding: 0;
|
11
|
+
margin: 0;
|
12
|
+
font-family: sans-serif;
|
13
|
+
}
|
14
|
+
|
15
|
+
.teaser {
|
16
|
+
display: flex;
|
17
|
+
flex-direction: column;
|
18
|
+
align-items: center;
|
19
|
+
padding: 2rem 0;
|
20
|
+
}
|
21
|
+
|
22
|
+
.headline {
|
23
|
+
font-size: 2rem;
|
24
|
+
font-weight: 700;
|
25
|
+
margin-bottom: 1rem;
|
26
|
+
}
|
27
|
+
|
28
|
+
.feature {
|
29
|
+
display: flex;
|
30
|
+
flex-direction: column;
|
31
|
+
align-items: center;
|
32
|
+
justify-content: center;
|
33
|
+
padding: 2rem;
|
34
|
+
background: #00B3B0;
|
35
|
+
border-radius: 0.5rem;
|
36
|
+
}
|
37
|
+
|
38
|
+
.name {
|
39
|
+
color: #FFF;
|
40
|
+
font-size: 1.25rem;
|
41
|
+
font-weight: 500;
|
42
|
+
}
|
43
|
+
|
44
|
+
.columns {
|
45
|
+
display: flex;
|
46
|
+
flex-direction: column;
|
47
|
+
gap: 1rem;
|
48
|
+
|
49
|
+
@media (min-width: 768px) {
|
50
|
+
display: grid;
|
51
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
52
|
+
gap: 1rem;
|
53
|
+
}
|
54
|
+
}
|
data/lib/rubyblok/version.rb
CHANGED
data/lib/rubyblok.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "storyblok"
|
4
|
+
require "redcarpet"
|
3
5
|
require "hash_dot"
|
4
|
-
require "rails"
|
5
|
-
require "action_controller"
|
6
6
|
|
7
7
|
require_relative "rubyblok/helpers/storyblok_helper"
|
8
8
|
require_relative "rubyblok/version"
|
9
9
|
require_relative "rubyblok/configuration"
|
10
|
-
require_relative "rubyblok/services/get_storyblok_story"
|
11
10
|
require_relative "rubyblok/railtie" if defined?(Rails)
|
11
|
+
require_relative "rubyblok/services/get_storyblok_story"
|
12
12
|
require_relative "rubyblok/mixins/model"
|
13
|
+
require_relative "rubyblok/mixins/webhook"
|
13
14
|
require_relative "generators/rubyblok/migration_generator"
|
14
15
|
require_relative "generators/rubyblok/install_generator"
|
15
|
-
|
16
|
-
require_relative "rubyblok/mixins/webhook"
|
17
16
|
require_relative "generators/rubyblok/webhook_controller_generator"
|
17
|
+
require_relative "generators/rubyblok/hello_world_generator"
|
18
18
|
|
19
19
|
module Rubyblok
|
20
20
|
def self.configuration
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyblok
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 100 Starlings
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hash_dot
|
@@ -75,12 +75,21 @@ extra_rdoc_files: []
|
|
75
75
|
files:
|
76
76
|
- ".rspec"
|
77
77
|
- ".rubocop.yml"
|
78
|
+
- CHANGELOG.md
|
78
79
|
- LICENSE.md
|
79
80
|
- README.md
|
80
81
|
- Rakefile
|
82
|
+
- lib/generators/rubyblok/hello_world_generator.rb
|
81
83
|
- lib/generators/rubyblok/install_generator.rb
|
82
84
|
- lib/generators/rubyblok/migration_generator.rb
|
83
85
|
- lib/generators/rubyblok/webhook_controller_generator.rb
|
86
|
+
- lib/generators/templates/hello_world_generator/_feature.html.erb
|
87
|
+
- lib/generators/templates/hello_world_generator/_grid.html.erb
|
88
|
+
- lib/generators/templates/hello_world_generator/_page.html.erb
|
89
|
+
- lib/generators/templates/hello_world_generator/_teaser.html.erb
|
90
|
+
- lib/generators/templates/hello_world_generator/controller.rb.erb
|
91
|
+
- lib/generators/templates/hello_world_generator/index.html.erb
|
92
|
+
- lib/generators/templates/hello_world_generator/styles.css
|
84
93
|
- lib/generators/templates/migration_create.rb.erb
|
85
94
|
- lib/generators/templates/migration_update.rb.erb
|
86
95
|
- lib/generators/templates/model.rb.erb
|
@@ -117,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
126
|
- !ruby/object:Gem::Version
|
118
127
|
version: '0'
|
119
128
|
requirements: []
|
120
|
-
rubygems_version: 3.5.
|
129
|
+
rubygems_version: 3.5.3
|
121
130
|
signing_key:
|
122
131
|
specification_version: 4
|
123
132
|
summary: Simple Storyblok CMS integration for Rails
|