svelte-on-rails 0.0.7 → 0.0.9

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: 652cbedb8f5796094fde7e81e8e548de0065d33efcc9ccedac89772626b6c937
4
- data.tar.gz: 324c08b71751b554662183e190dfe690cbe8fda05146a91c4fe42875956ce367
3
+ metadata.gz: 21cc2327494c663a2040c3775ec40e5fd4e3612a28e51eba172c13da07440ad0
4
+ data.tar.gz: 9773b7346d542202ae0670e2c79d03faca86164b513e398df0c0bf6c265efd87
5
5
  SHA512:
6
- metadata.gz: be5231d79d34ed7ce9b5086c653b6f16d85bddffbf0c9ebf4fe7f8a8beb3e2841d26c9f86950aa4b17855b6530c68554eb696fd2e259c818f0505a4f86591eea
7
- data.tar.gz: 4c428ca838a17cfe7609a0734b6419a4fb12feda2fed52aadbf72639bfa1f41eb0abf1cc2fa346a2456fc3f9a8af671f1696f5ccde045cab4a2ddbe58ae348b0
6
+ metadata.gz: 8d252352dcadea7d3fe44d937cff9b2e5a9376a7d6bdb8087cb19b9c15ad0084fe0d93c323ddad9cbc0ab5b82443cc3b023e61beb1b724405d0b9c8c6748dc55
7
+ data.tar.gz: 7b8be4d43e13f0bafe356a6dbc3b3052b44627b30fdb56509313993e14fb6bed039f411f4d9b0b045d53cb697f2b101b73488e4e136de4c433ad83621bccc92a
data/README.md CHANGED
@@ -2,21 +2,21 @@
2
2
 
3
3
  Seamless and robust Svelte in Rails integration.
4
4
 
5
- Can render server-side (SSR), always or only on first request, and handle
6
- subsequent turbo requests by mounting svelte components
7
- on an empty element for server-side performance optimisation.
8
- Server-side compilation via rollup.
5
+ By default an when installed together with hotwired/turbo, it renders
6
+ svelte components on first request server side («SSR») and for subsequent
7
+ requests it provides a empty tag that is filled up on the frontend by svelte.
8
+
9
+ This way works perfectly together with turbo, you will never notice
10
+ this unpleasant «blink» on the frontend and it is maximum performance
11
+ optimized. SSR compilation is handled by rollup.
9
12
 
10
13
  Server-side rendering is the bottleneck on such a pipeline.
11
14
  Although rollup is powerful, this gem is in an early state
12
- and there are certainly limitations.
13
- So please always test your components early if they pass ssr.
15
+ and there may be limitations.
14
16
 
15
- I have written everything in ESM syntax.
17
+ I have written everything in ESM syntax, orientated by the functionality of vite.
16
18
  Although the common-js plugin is installed, I have not tested it,
17
19
  so for example `require` may not work in Svelte components.
18
- To check which import statements work, please check the components
19
- in the `spec/rails-vite-test-app/app/frontend/javascript/components` gem.
20
20
 
21
21
  This all is developed on Rails-7 together with `vite_rails`.
22
22
 
@@ -27,7 +27,8 @@ and [ElMassimo](https://github.com/ElMassimo) because they all helped me with th
27
27
 
28
28
  - actual node installed on the server
29
29
  - tested on ruby 3.2.2 and rails 7.1
30
- - svelte (see: [install svelte on vite/rails](https://dev.to/chmich/setup-inertia-and-svelte-on-rails-7-3glk))
30
+ - svelte v5 (see: [how to install svelte on rails/vite](https://dev.to/chmich/setup-inertia-and-svelte-on-rails-7-3glk))
31
+ - turbo (recommended / [how to install turbo on rails](https://github.com/hotwired/turbo-rails?tab=readme-ov-file#installation))
31
32
 
32
33
  ## Installation
33
34
 
@@ -35,31 +36,37 @@ add
35
36
  ```ruby
36
37
  gem "svelte-on-rails"
37
38
  ```
38
- to your gemfile
39
-
40
- and run
39
+ to your gemfile and run
41
40
 
42
41
  ```ruby
42
+ $ bundle
43
43
  $ rails svelte_on_rails:install
44
44
  ```
45
45
 
46
- This will create a little config file, please read the comments there.
46
+ This will create a little config file, please read the comments there and set the tags:
47
+
48
+ - `frontend_folder` (relative to Rails.root)
49
+ - `components_folder` (relative to frontend_folder)
47
50
 
48
51
  Set up the npm module [@csedl/svelte-on-rails](https://www.npmjs.com/package/@csedl/svelte-on-rails) on the client side.
49
52
 
50
53
  ## Usage
51
54
 
55
+ On the view
56
+
52
57
  ```haml
53
58
  = svelte_component("myComponent", items: ['item1', 'item2'])
54
59
  ```
55
60
 
56
- would render a component like `myComponent.svelte`
61
+ Within the `components_folder` (configs above) a component like `myComponent.svelte`
57
62
 
58
63
  ```sveltehtml
59
64
  <script>
60
65
  export let items
61
66
  </script>
62
67
 
68
+ <h1>Greetings from svelte</h1>
69
+
63
70
  <ul>
64
71
  {#each items as item}
65
72
  <li>{item}</li>
@@ -73,6 +80,7 @@ would render a component like `myComponent.svelte`
73
80
  </style>
74
81
  ```
75
82
 
83
+ And you should see «Greetings from svelte» on the browser.
76
84
 
77
85
  ### Import statements
78
86
 
@@ -88,6 +96,8 @@ Among others there are
88
96
 
89
97
  ## Option `render_server_side: :auto`
90
98
 
99
+ `render_server_side: :auto` is the default option, as set on config file and can be overridden on the view helper.
100
+
91
101
  Works with `hotwired/turbo` only
92
102
 
93
103
  By passing the `render_server_side: :auto` option to the view helper,
@@ -151,4 +161,4 @@ initial request and the rest happens on the frontend.
151
161
  ## Testing
152
162
 
153
163
  Testings are within the gem by `rspec`. And there is a [rails project](https://gitlab.com/users/sedl/projects) with
154
- testings (based on playwright) where some examples are built in.
164
+ testings (based on playwright) where the npm package and this gem is tested together.
@@ -9,8 +9,6 @@ module SvelteOnRails
9
9
  @svelte_filename = filename
10
10
  @compiled_file = "#{SvelteOnRails::Configuration.instance.dist_folder}/#{(filename.match(/\.svelte$/) ? filename[0..-8] : filename)}"
11
11
 
12
- raise "File not found: #{@svelte_file}" unless File.exist?(@svelte_file)
13
-
14
12
  end
15
13
 
16
14
  def compile_if_changes
@@ -3,6 +3,10 @@ module SvelteOnRails
3
3
 
4
4
  def svelte_component(filename, props = {})
5
5
 
6
+ # check filename
7
+ file_path = SvelteOnRails::Configuration.instance.components_folder + "#{filename}.svelte"
8
+ raise "File not found: #{file_path}" unless File.exist?(file_path)
9
+
6
10
  # check what to do
7
11
 
8
12
  rss = if props.key?(:render_server_side)
@@ -23,7 +23,7 @@ namespace :svelte_on_rails do
23
23
  # relative to frontend_folder
24
24
  # where your svelte components are located
25
25
 
26
- render_server_side: true
26
+ render_server_side: :auto
27
27
  # options: true, false, :auto
28
28
  # :auto: render server side if request is initial request (works only with turbo, because it checks for the X-Turbo-Request-ID header)
29
29
  # when not server-side rendered the components must be built as custom elements, see node-package @csedl/svelte-on-rails
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svelte-on-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Sedlmair