inertia_rails 1.9.2 → 1.10.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: 84d7a55c30678d9984236bdca8442ff34268cb09ff8795560d0506678acf9ab8
4
- data.tar.gz: 48308b96e0e2cf06c70027649acc8e992f280743fd5cae05c70a49c4d8ec343e
3
+ metadata.gz: c76eba9ada41f6b781b030f81b43bb87169034594127e106ec4dbee472926e8e
4
+ data.tar.gz: e9ed9115c9d6a678bdefdeeeafbeb1790c9a28f37521d71c699d5ca40989cd86
5
5
  SHA512:
6
- metadata.gz: b8ab3b00e2ee6a44649924fd60aefad32bd5bd33621a12c45ddb692f49d7220a4f1a3837334d983ce614a30c9144249c23f280918b8fbc9b75aef2f97cfad04d
7
- data.tar.gz: de4d10ec3200f4d45a50c2a1cb2abcc479182f4cee135b9401f43679ad1e296031c644982b9d2fa5e5a5875f1fe909b8dfcda941e933927028b0f7cbdbbb8d97
6
+ metadata.gz: 5d0285ccf5284c9fb4d267d25dfc899d58be5f57b2166fc42251246398483aaf639c8dbec94181a1a5978c020ea2fb796872248dd3de7c14db165b8ab20755cb
7
+ data.tar.gz: c06d57bec2e2c4fa55b15428055684999af1d65ee226f42263cb945d17ce4f06029bc8365b2a9f52b59db924b251f34944dd96998a7933b64fe18c6e80ae3117
data/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [1.10.0] - 2021-03-22
8
+
9
+ * Added install generator to quickly add Inertia to existing rails apps via `rails inertia_rails:install:react`
10
+
7
11
  ## [1.9.2] - 2021-02-23
8
12
 
9
13
  * Improve method for detecting whether a user used the RSpec helpers without adding `inertia: true` to the spec
@@ -0,0 +1,7 @@
1
+ class InertiaExampleController < ApplicationController
2
+ def index
3
+ render inertia: 'InertiaExample', props: {
4
+ name: 'World',
5
+ }
6
+ end
7
+ end
@@ -0,0 +1,21 @@
1
+ import { App } from '@inertiajs/inertia-react';
2
+ import React from 'react';
3
+ import { render } from 'react-dom';
4
+ import axios from 'axios';
5
+ import { InertiaProgress } from '@inertiajs/progress';
6
+
7
+ document.addEventListener('DOMContentLoaded', () => {
8
+ InertiaProgress.init();
9
+ const el = document.getElementById('app')
10
+
11
+ const csrfToken = document.querySelector('meta[name=csrf-token]').content;
12
+ axios.defaults.headers.common['X-CSRF-Token'] = csrfToken;
13
+
14
+ render(
15
+ <App
16
+ initialPage={JSON.parse(el.dataset.page)}
17
+ resolveComponent={name => require(`../Pages/${name}`).default}
18
+ />,
19
+ el
20
+ )
21
+ });
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+
3
+ const InertiaExample = ({name}) => (
4
+ <>
5
+ <h1>Hello {name}!</h1>
6
+ </>
7
+ );
8
+
9
+ export default InertiaExample;
@@ -0,0 +1,62 @@
1
+ module InertiaRails
2
+ class InstallGenerator < Rails::Generators::Base
3
+ source_root File.expand_path('./install', __dir__)
4
+ class_option :front_end, type: :string, default: 'react'
5
+
6
+ FRONT_END_INSTALLERS = [
7
+ 'react',
8
+ ]
9
+
10
+ def install
11
+ exit! unless installable?
12
+
13
+ install_base!
14
+
15
+ send "install_#{options[:front_end]}!"
16
+
17
+ say "You're all set! Run rails s and checkout localhost:3000/inertia-example", :green
18
+ end
19
+
20
+ protected
21
+
22
+ def installable?
23
+ unless run("./bin/rails webpacker:verify_install")
24
+ say "Sorry, you need to have webpacker installed for inertia_rails default setup.", :red
25
+ return false
26
+ end
27
+
28
+ unless options[:front_end].in? FRONT_END_INSTALLERS
29
+ say "Sorry, there is no generator for #{options[:front_end]}!\n\n", :red
30
+ say "If you are a #{options[:front_end]} developer, please help us improve inertia_rails by contributing an installer.\n\n"
31
+ say "https://github.com/inertiajs/inertia-rails/\n\n"
32
+
33
+ return false
34
+ end
35
+ end
36
+
37
+ def install_base!
38
+ say "Adding inertia pack tag to application layout", :blue
39
+ insert_into_file Rails.root.join("app/views/layouts/application.html.erb").to_s, after: "<%= javascript_pack_tag 'application' %>\n" do
40
+ "\t\t<%= javascript_pack_tag 'inertia' %>\n"
41
+ end
42
+
43
+ say "Installing inertia client packages", :blue
44
+ run "yarn add @inertiajs/inertia @inertiajs/progress"
45
+
46
+ say "Copying example files", :blue
47
+ template "controller.rb", Rails.root.join("app/controllers/inertia_example_controller.rb").to_s
48
+
49
+ say "Adding a route for the example inertia controller...", :blue
50
+ route "get 'inertia-example', to: 'inertia_example#index'"
51
+ end
52
+
53
+ def install_react!
54
+ say "Creating a React page component...", :blue
55
+ run 'yarn add @inertiajs/inertia-react'
56
+ template "react.jsx", Rails.root.join("app/javascript/Pages/InertiaExample.js").to_s
57
+ say "Copying inertia.jsx into webpacker's packs folder...", :blue
58
+ template "inertia.jsx", Rails.root.join("app/javascript/packs/inertia.jsx").to_s
59
+ say "done!", :green
60
+ end
61
+ end
62
+ end
@@ -1,3 +1,3 @@
1
1
  module InertiaRails
2
- VERSION = "1.9.2"
2
+ VERSION = "1.10.0"
3
3
  end
@@ -0,0 +1,16 @@
1
+ namespace :inertia_rails do
2
+ namespace :install do
3
+ desc "Installs inertia_rails packages and configurations for a React based app"
4
+ task :react => :environment do
5
+ system 'rails g inertia_rails:install --front_end react'
6
+ end
7
+ desc "Installs inertia_rails packages and configurations for a Vue based app"
8
+ task vue: :environment do
9
+ system 'rails g inertia_rails:install --front_end vue'
10
+ end
11
+ desc "Installs inertia_rails packages and configurations for a Svelte based app"
12
+ task svelte: :environment do
13
+ system 'rails g inertia_rails:install --front_end svelte'
14
+ end
15
+ end
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inertia_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.2
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Knoles
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2021-02-23 00:00:00.000000000 Z
13
+ date: 2021-03-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -153,6 +153,10 @@ files:
153
153
  - gemfiles/rails_6.0.gemfile
154
154
  - gemfiles/rails_6.1.gemfile
155
155
  - inertia_rails.gemspec
156
+ - lib/generators/inertia_rails/install/controller.rb
157
+ - lib/generators/inertia_rails/install/inertia.jsx
158
+ - lib/generators/inertia_rails/install/react.jsx
159
+ - lib/generators/inertia_rails/install_generator.rb
156
160
  - lib/inertia_rails.rb
157
161
  - lib/inertia_rails/controller.rb
158
162
  - lib/inertia_rails/engine.rb
@@ -168,6 +172,7 @@ files:
168
172
  - lib/patches/debug_exceptions/patch-5-1.rb
169
173
  - lib/patches/mapper.rb
170
174
  - lib/patches/request.rb
175
+ - lib/tasks/inertia_rails.rake
171
176
  homepage: https://github.com/inertiajs/inertia-rails
172
177
  licenses:
173
178
  - MIT