vuejs 1.1.0.beta8 → 1.1.0.beta9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +32 -103
- data/app/helpers/syntax_helper.rb +7 -7
- data/lib/generators/generator_templates/packs/index.js +2 -2
- data/lib/generators/generator_templates/sfc/single-file-component.vue +2 -2
- data/lib/generators/generator_templates/turbolinks/turbolinks-pack.js.erb +1 -1
- data/lib/generators/options/click.rb +10 -0
- data/lib/generators/options/form.rb +19 -0
- data/lib/generators/options/list.rb +32 -0
- data/lib/generators/options/modal.rb +26 -0
- data/lib/generators/options/seperate.rb +5 -0
- data/lib/generators/options/single.rb +3 -0
- data/lib/generators/options/table.rb +10 -0
- data/lib/generators/options/test.rb +2 -0
- data/lib/generators/options/turbolinks-seperate.rb +5 -0
- data/lib/generators/options/turbolinks-single.rb +3 -0
- data/lib/generators/options/vuex.rb +10 -0
- data/lib/generators/vue/vue_generator.rb +37 -73
- data/lib/install/Procfile +2 -0
- data/lib/install/setup.rb +25 -14
- data/lib/install/spv.rb +20 -0
- data/lib/install/test.rb +1 -1
- data/lib/install/turbolinks.rb +3 -3
- data/lib/install/ui.rb +4 -2
- data/lib/install/vuex.rb +10 -8
- data/lib/tasks/assets.rake +1 -1
- data/lib/tasks/info.rake +1 -1
- data/lib/tasks/vue.rake +27 -0
- data/lib/vuejs/version.rb +1 -1
- metadata +16 -5
- data/LICENSE +0 -21
- data/lib/generators/generator_templates/vuex/index.js +0 -22
- data/lib/tasks/setup.rake +0 -72
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc4f7d0ccd9c4c49b951d2e6935fc2f9324cc96445c2e650df8eb52d3a2ad603
|
4
|
+
data.tar.gz: 5a9918f4673802f8869edf4d6b9004ce077b20d13e1c932154687ad3d843ca6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ece669487dc16e776fc0a500b54fab711bf9ac7ad685f32cd6bf3fbb76c61a43ff2a09a35470c549da1fe579d54e0f7c972d845ce950d3b030d660a8aa4f9d9
|
7
|
+
data.tar.gz: eedf25468ef8e5d98977c1792f1127911d9184c3d6e96e2e4daa8e4669e09bf85b339593bebb8c7fcfe82f3c9e0393a34d7c0e84dd4884f84d7ea0243e8853ac
|
data/README.md
CHANGED
@@ -1,139 +1,68 @@
|
|
1
|
-
# Welcome to Vuejs Gem
|
1
|
+
# Welcome to Vuejs Gem 💎
|
2
2
|
|
3
3
|
> Vue for your favourite Ruby on Rails projects
|
4
4
|
|
5
|
-
|
5
|
+
This gem aims to make it easy and simple to run Vue on Rails project. It ships out-of-the-box configuration, component generators and solutions to make life easy for both Vue and Rails.
|
6
6
|
|
7
|
-
|
8
|
-
rails new app -m http://vueonrails.com/vue
|
9
|
-
```
|
10
|
-
|
11
|
-
## Installation
|
12
|
-
|
13
|
-
Add this line to your application's Gemfile and run `bundle`
|
14
|
-
|
15
|
-
```ruby
|
16
|
-
gem 'vuejs'
|
17
|
-
```
|
18
|
-
|
19
|
-
and run `rails vue:setup`
|
7
|
+
---
|
20
8
|
|
21
|
-
##
|
9
|
+
## Getting Started
|
22
10
|
|
23
|
-
To
|
11
|
+
To create an empty Vue on Rails project, please run the following Rails command with an application template
|
24
12
|
|
25
13
|
```
|
26
14
|
rails new app -m http://vueonrails.com/vue
|
27
15
|
```
|
28
16
|
|
29
|
-
To browse the application template, it's here http://vueonrails.com/vue
|
30
|
-
|
31
|
-
|
32
|
-
## Generate a new Vue component
|
33
|
-
|
34
|
-
To generate a new vue component is easy. Please run the following command:
|
35
|
-
|
36
|
-
```
|
37
|
-
rails generate vue something
|
38
|
-
```
|
39
|
-
|
40
|
-
> Note: `vuejs` gem creates vue components as single-file component by default.
|
17
|
+
To browse the application template, it's here http://vueonrails.com/vue
|
41
18
|
|
42
|
-
To generate a component with seperation of concern, please use the option `--seperate`,
|
43
|
-
like `rails g vue something --seperate`
|
44
19
|
|
45
|
-
|
20
|
+
## Manual Installation
|
46
21
|
|
47
|
-
|
22
|
+
Add this line to your application's Gemfile and run `bundle`
|
48
23
|
|
49
|
-
|
50
|
-
|
51
|
-
rails destroy vue something
|
24
|
+
```ruby
|
25
|
+
gem 'vuejs'
|
52
26
|
```
|
53
27
|
|
54
|
-
|
55
|
-
|
56
|
-
Vue-component viewer allows you to browse your individual & independent Vue component easily without its surrounding element outside the scope of the component. Simply visit http://localhost:3000/vue/<name>
|
57
|
-
|
58
|
-
To mount the endpoint `/vue/<name>`, go to routes.rb and paste this:
|
59
|
-
|
60
|
-
```
|
61
|
-
mount Vuejs::engine, to: 'vue'
|
62
|
-
```
|
28
|
+
and run `rails vue:setup`
|
63
29
|
|
64
|
-
|
30
|
+
You can scaffold a Vue component by reading along the [Vue on Rails Handbook](/vueonrails/tree/master/docs)
|
65
31
|
|
66
|
-
|
67
|
-
rails generate vue something --turbolinks
|
68
|
-
```
|
32
|
+
---
|
69
33
|
|
70
|
-
##
|
34
|
+
## Getting Help & Contributing Back
|
71
35
|
|
72
|
-
|
73
|
-
|
74
|
-
|
36
|
+
- [Official Rails documentation](https://guides.rubyonrails.org)
|
37
|
+
- [Official Vue documentation](https://vuejs.org/v2/guide/)
|
38
|
+
- [vuecomponents.com](https://vuecomponents.com)
|
39
|
+
- [Official Find vue curated component](https://curated.vuejs.org)
|
40
|
+
- [vuetoolbox.com](http://www.vuetoolbox.com)
|
41
|
+
- [github search for vue stuffs](https://github.com/search?o=desc&q=vue&s=stars&type=Repositories)
|
42
|
+
- [stackoverflow.com](https://stackoverflow.com/questions/tagged/vue.js+ruby-on-rails)
|
75
43
|
|
76
|
-
## Generate a Vue component with Specific Page Vue support
|
77
44
|
|
78
|
-
|
79
|
-
rails generate vue something --spv
|
80
|
-
```
|
45
|
+
On stackoverflow.com, tag your Vue on Rails questions with Vue & Rails and we will try to answer you.
|
81
46
|
|
82
|
-
|
47
|
+
- And it is likely that I missed some great online materials. If you think there is a more worthy resource, please edit this readme via a pull request.
|
83
48
|
|
84
|
-
|
85
|
-
rails generate vue something --test
|
86
|
-
```
|
49
|
+
- Find a bug? [Submit an issue](https://github.com/ytbryan/vueonrails/issues) on our tracker.
|
87
50
|
|
88
|
-
|
51
|
+
- Find something wrong? [Send a pull request](https://github.com/ytbryan/vueonrails/pulls).
|
89
52
|
|
90
53
|
---
|
91
54
|
|
92
|
-
|
93
|
-
|
94
|
-
### Sprockets::FileNotFound: couldn't find file 'vue-validator'
|
95
|
-
|
96
|
-
```
|
97
|
-
Sprockets::FileNotFound: couldn't find file 'vue-validator' with type 'application/javascript'
|
98
|
-
```
|
99
|
-
|
100
|
-
vue-validator has been changed to vue-validator2
|
101
|
-
and vue-validator3. Use `//= require vue-validator2` or `//= require vue-validator3` instead.
|
102
|
-
|
103
|
-
### Sprockets::FileNotFound: couldn't find file 'vuex'
|
104
|
-
|
105
|
-
vuex has been updated to vuex2. Therefore use `//= require vuex2` to resolve the error `Sprockets::FileNotFound: couldn't find file 'vuex'`.
|
106
|
-
|
107
|
-
### You are running Vue in development mode.
|
108
|
-
|
109
|
-
```
|
110
|
-
You are running Vue in development mode.
|
111
|
-
Make sure to turn on production mode when deploying for production.
|
112
|
-
See more tips at https://vuejs.org/guide/deployment.html
|
113
|
-
```
|
55
|
+
## Contact
|
114
56
|
|
115
|
-
|
57
|
+
📮 Bryan Lim ytbryan@gmail.com
|
116
58
|
|
59
|
+
> If you are using Vue.js via this rubygem, please let me know so that I can list your project/company on this repo. Thank you!
|
117
60
|
|
118
|
-
|
61
|
+
Richard LaFranchi and I are writing a book [Vue on rails](http://vueonrails.com). If you are interested to be one of the early reviewers of our drafts, please email me.
|
119
62
|
|
120
|
-
|
121
|
-
- Webpacker
|
122
|
-
- Vue
|
123
|
-
- Node
|
124
|
-
- Webpack
|
63
|
+
---
|
125
64
|
|
126
|
-
##
|
65
|
+
## MIT License
|
127
66
|
|
128
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/ytbryan/
|
67
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/ytbryan/vueonrails. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
129
68
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
130
|
-
|
131
|
-
## Book
|
132
|
-
|
133
|
-
Richard LaFranchi and I are writing a book on [Vue on rails](http://vueonrails.com). If you are interested to be one of the early reviewers of our drafts, please email me.
|
134
|
-
|
135
|
-
## Contact
|
136
|
-
|
137
|
-
📮 Bryan Lim ytbryan@gmail.com
|
138
|
-
|
139
|
-
> If you are using Vue.js via this rubygem, do let me know so that I can list your project/company on this repo. Thank you!
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module SyntaxHelper
|
2
|
-
def
|
2
|
+
def specific_page_vue
|
3
3
|
return " #{controller_name} #{action_name} "
|
4
4
|
end
|
5
5
|
|
@@ -26,11 +26,11 @@ module SyntaxHelper
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
def vue(identifier)
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
29
|
+
# def vue(identifier)
|
30
|
+
# concat("<div id=\"#{identifier}\" refs=\"#{identifier}\">".html_safe)
|
31
|
+
# yield
|
32
|
+
# concat("</div>".html_safe)
|
33
|
+
# end
|
34
34
|
|
35
|
-
alias v vue
|
35
|
+
# alias v vue
|
36
36
|
end
|
@@ -10,8 +10,8 @@ import App from '../parts/<%= name %>/<%= name %>.vue'
|
|
10
10
|
<% else -%>
|
11
11
|
import App from '../parts/<%= name %>.vue'
|
12
12
|
<% end -%>
|
13
|
-
Vue.use(TurbolinksAdapter)
|
14
13
|
|
14
|
+
Vue.use(TurbolinksAdapter)
|
15
15
|
document.addEventListener('turbolinks:load', () => {
|
16
16
|
if(isView("###")){
|
17
17
|
const <%= name %> = new Vue({
|
@@ -0,0 +1,10 @@
|
|
1
|
+
click = <<-eos
|
2
|
+
<button @click="onClick()">click</button>
|
3
|
+
eos
|
4
|
+
|
5
|
+
say "Inserted click example into component"
|
6
|
+
insert_into_file "#{PARTS_PATH}/#{name}.vue",
|
7
|
+
click, after: "<p>{{ message }}</p>\n"
|
8
|
+
|
9
|
+
insert_into_file "#{PARTS_PATH}/#{name}.vue",
|
10
|
+
" alert('click');\n", after: "console.log(\"clicked\")\n"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
say "Inserted form example into component"
|
2
|
+
insert_into_file "#{PACKS_PATH}/#{name}.js" ,
|
3
|
+
"import FormFor from 'vue-form-for'\n",
|
4
|
+
after: "import Vue from 'vue'\n"
|
5
|
+
|
6
|
+
insert_into_file "#{PACKS_PATH}/#{name}.js",
|
7
|
+
"Vue.use(FormFor)\n",
|
8
|
+
before: "document.addEventListener"
|
9
|
+
|
10
|
+
form = <<-eos
|
11
|
+
<form-for model="#{name}">
|
12
|
+
<text-field/>
|
13
|
+
<submit-tag/>
|
14
|
+
</form-for>
|
15
|
+
eos
|
16
|
+
|
17
|
+
insert_into_file "#{PARTS_PATH}/#{name}.vue",
|
18
|
+
form,
|
19
|
+
after: "<p>{{ message }}</p>\n"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
list = <<-eos
|
2
|
+
<button @click="add()">add</button>
|
3
|
+
<button @click="remove()">remove</button>
|
4
|
+
<ul>
|
5
|
+
<li v-for="(item, index) in items" :key="index">
|
6
|
+
{{item}}
|
7
|
+
</li>
|
8
|
+
</ul>
|
9
|
+
eos
|
10
|
+
|
11
|
+
array = <<-eos
|
12
|
+
items: [],
|
13
|
+
eos
|
14
|
+
|
15
|
+
addandremove = <<-eos
|
16
|
+
remove: function(){
|
17
|
+
this.items.pop()
|
18
|
+
},
|
19
|
+
add: function(){
|
20
|
+
this.items.push(this.message)
|
21
|
+
},
|
22
|
+
eos
|
23
|
+
|
24
|
+
say "Inserted list example into component"
|
25
|
+
insert_into_file "#{PARTS_PATH}/#{name}.vue",
|
26
|
+
list, after: "<p>{{ message }}</p>\n"
|
27
|
+
|
28
|
+
insert_into_file "#{PARTS_PATH}/#{name}.vue",
|
29
|
+
addandremove, after: "methods: {\n"
|
30
|
+
|
31
|
+
insert_into_file "#{PARTS_PATH}/#{name}.vue",
|
32
|
+
array, after: "return {\n"
|
@@ -0,0 +1,26 @@
|
|
1
|
+
run "yarn add vue-js-modal"
|
2
|
+
|
3
|
+
say "Inserted vue-js-modal example into component"
|
4
|
+
insert_into_file "#{PACKS_PATH}/#{name}.js" ,
|
5
|
+
"import VModal from 'vue-js-modal'\n",
|
6
|
+
after: "import Vue from 'vue'\n"
|
7
|
+
|
8
|
+
insert_into_file "#{PACKS_PATH}/#{name}.js",
|
9
|
+
"Vue.use(VModal)\n",
|
10
|
+
before: "document.addEventListener"
|
11
|
+
|
12
|
+
modal = <<-eos
|
13
|
+
<button @click="onClick">click this</button>
|
14
|
+
<modal name="hello-world">
|
15
|
+
<div style="padding: 30px;">
|
16
|
+
{{ message }}
|
17
|
+
</div>
|
18
|
+
<v-dialog/>
|
19
|
+
</modal>
|
20
|
+
eos
|
21
|
+
|
22
|
+
insert_into_file "#{PARTS_PATH}/#{name}.vue",
|
23
|
+
modal, after: "<p>{{ message }}</p>\n"
|
24
|
+
|
25
|
+
insert_into_file "#{PARTS_PATH}/#{name}.vue",
|
26
|
+
" this.$modal.show('hello-world');\n", after: "console.log(\"clicked\")\n"
|
@@ -0,0 +1,5 @@
|
|
1
|
+
say "Generated a vue component with seperation of concern"
|
2
|
+
template "packs/pack.js.erb", "#{PACKS_PATH}/#{name}.js"
|
3
|
+
template "packs/index.vue", "#{PARTS_PATH}/#{name}/#{name}.vue"
|
4
|
+
template "packs/index.js", "#{PARTS_PATH}/#{name}/#{name}.js"
|
5
|
+
copy_file "packs/index.css", "#{PARTS_PATH}/#{name}/#{name}.css"
|
@@ -0,0 +1,10 @@
|
|
1
|
+
run "yarn add vuetable-2"
|
2
|
+
|
3
|
+
say "Inserted table example into component"
|
4
|
+
insert_into_file "#{PACKS_PATH}/#{name}.js" ,
|
5
|
+
"import Vuetable from 'vuetable-2/src/components/Vuetable'\n",
|
6
|
+
after: "import Vue from 'vue'\n"
|
7
|
+
|
8
|
+
insert_into_file "#{PACKS_PATH}/#{name}.js",
|
9
|
+
"Vue.use(Vuetable)\n",
|
10
|
+
before: "document.addEventListener"
|
@@ -0,0 +1,5 @@
|
|
1
|
+
say "Adding turbolinks to a single file component"
|
2
|
+
template "turbolinks/turbolinks-pack.js.erb", "#{PACKS_PATH}/#{name}.js"
|
3
|
+
template "packs/index.vue", "#{PARTS_PATH}/#{name}/#{name}.vue"
|
4
|
+
template "packs/index.js", "#{PARTS_PATH}/#{name}/#{name}.js"
|
5
|
+
copy_file "packs/index.css", "#{PARTS_PATH}/#{name}/#{name}.css"
|
@@ -0,0 +1,10 @@
|
|
1
|
+
run "yarn add vuex"
|
2
|
+
|
3
|
+
say "Added Vuex"
|
4
|
+
insert_into_file "#{PACKS_PATH}/#{name}.js" ,
|
5
|
+
"import Vuex from 'vuex'\n",
|
6
|
+
after: "import Vue from 'vue'\n"
|
7
|
+
|
8
|
+
insert_into_file "#{PACKS_PATH}/#{name}.js",
|
9
|
+
"Vue.use(Vuex)\n",
|
10
|
+
before: "document.addEventListener"
|
@@ -1,95 +1,59 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
1
3
|
class VueGenerator < Rails::Generators::NamedBase
|
2
4
|
source_root File.expand_path('../../generator_templates', __FILE__)
|
3
5
|
|
4
6
|
argument :name, type: :string, default: :index
|
5
|
-
class_option :seperate, type: :boolean, default: false
|
6
|
-
class_option :vuex, type: :boolean, default: false
|
7
|
-
class_option :turbolinks, type: :boolean, default: false
|
8
|
-
class_option :test, type: :boolean, default: false
|
9
|
-
class_option 'form-for', type: :boolean, default: false
|
10
7
|
|
11
8
|
PACKS_PATH = "app/javascript/packs"
|
12
9
|
PARTS_PATH = "app/javascript/parts"
|
13
10
|
TESTS_PATH = "app/javascript/tests"
|
14
11
|
|
15
|
-
|
16
|
-
|
12
|
+
|
13
|
+
OPTIONS = {
|
14
|
+
test: {type: :boolean, default: false},
|
15
|
+
vuex: {type: :boolean, default: false},
|
16
|
+
form: {type: :boolean, default: false},
|
17
|
+
tab: {type: :boolean, default: false},
|
18
|
+
list: {type: :boolean, default: false},
|
19
|
+
table: {type: :boolean, default: false},
|
20
|
+
modal: {type: :boolean, default: false},
|
21
|
+
click: {type: :boolean, default: false},
|
22
|
+
}.freeze
|
23
|
+
|
24
|
+
class_option :seperate, type: :boolean, default: false
|
25
|
+
class_option :turbolinks, type: :boolean, default: false
|
26
|
+
|
27
|
+
OPTIONS.each do |each_option, value|
|
28
|
+
class_option each_option, type: :boolean, default: false
|
29
|
+
end
|
30
|
+
|
31
|
+
def vue
|
32
|
+
if options[:seperate]
|
17
33
|
if options[:turbolinks]
|
18
|
-
|
34
|
+
add_to_component("turbolinks-seperate", name)
|
19
35
|
else
|
20
|
-
|
36
|
+
add_to_component("seperate", name)
|
21
37
|
end
|
22
38
|
else
|
23
39
|
if options[:turbolinks]
|
24
|
-
|
40
|
+
add_to_component("turbolinks-single", name)
|
25
41
|
else
|
26
|
-
|
42
|
+
add_to_component("single", name)
|
27
43
|
end
|
28
44
|
end
|
29
|
-
|
30
|
-
options[:test] ? add_tests_to_component(name) : nil
|
31
|
-
options[:vuex] ? add_vuex_to_component(name) : nil
|
32
|
-
options['form-for'] ? add_helpers_to_component(name) : nil
|
33
|
-
end
|
34
45
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
template "tests/unit.test.js.erb", "#{TESTS_PATH}/#{name}.test.js"
|
39
|
-
end
|
40
|
-
|
41
|
-
def add_helpers_to_component name
|
42
|
-
insert_into_file "#{PACKS_PATH}/#{name}.js" ,
|
43
|
-
"import FormFor from 'vue-form-for'",
|
44
|
-
after: "import Vue from 'vue'\n"
|
45
|
-
|
46
|
-
insert_into_file "#{PACKS_PATH}/#{name}.js",
|
47
|
-
"Vue.use(FormFor)\n",
|
48
|
-
before: "document.addEventListener"
|
49
|
-
|
50
|
-
run "yarn add vue-form-for"
|
51
|
-
end
|
52
|
-
|
53
|
-
def add_vuex_to_component name
|
54
|
-
insert_into_file "#{PACKS_PATH}/#{name}.js" ,
|
55
|
-
"import Vuex from 'vuex'\n",
|
56
|
-
after: "import Vue from 'vue'\n"
|
57
|
-
|
58
|
-
insert_into_file "#{PACKS_PATH}/#{name}.js",
|
59
|
-
"Vue.use(Vuex)\n",
|
60
|
-
before: "document.addEventListener"
|
61
|
-
run "yarn add vuex"
|
62
|
-
end
|
63
|
-
|
64
|
-
def create_component_with_seperate_concern_using name
|
65
|
-
say "Generated a vue component with seperation of concern"
|
66
|
-
@code = "<%= vue \"#{name}\" %>"
|
67
|
-
template "packs/pack.js.erb", "#{PACKS_PATH}/#{name}.js"
|
68
|
-
template "packs/index.vue", "#{PARTS_PATH}/#{name}/#{name}.vue"
|
69
|
-
template "packs/index.js", "#{PARTS_PATH}/#{name}/#{name}.js"
|
70
|
-
copy_file "packs/index.css", "#{PARTS_PATH}/#{name}/#{name}.css"
|
71
|
-
end
|
72
|
-
|
73
|
-
def create_single_file_component_using name
|
74
|
-
say "Generated a single file component"
|
75
|
-
@code = "<%= vue \"#{name}\" %>"
|
76
|
-
template "packs/pack.js.erb", "#{PACKS_PATH}/#{name}.js"
|
77
|
-
template "sfc/single-file-component.vue", "#{PARTS_PATH}/#{name}.vue"
|
78
|
-
end
|
79
|
-
|
80
|
-
def create_turbolink_single_file_component_using name
|
81
|
-
say "Adding turbolinks to a single file component"
|
82
|
-
@code = "<%= vue \"#{name}\" %>"
|
83
|
-
template "turbolinks/turbolinks-pack.js.erb", "#{PACKS_PATH}/#{name}.js"
|
84
|
-
template "sfc/single-file-component.vue", "#{PARTS_PATH}/#{name}.vue"
|
46
|
+
OPTIONS.each do |each_option, value|
|
47
|
+
options[each_option] ? add_to_component(each_option, name) : nil
|
48
|
+
end
|
85
49
|
end
|
86
50
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
template
|
92
|
-
|
93
|
-
|
51
|
+
private
|
52
|
+
def add_to_component(example, name)
|
53
|
+
puts "add to component #{name} running #{example}"
|
54
|
+
namespace = OpenStruct.new(TESTS_PATH: TESTS_PATH, PARTS_PATH: PARTS_PATH, PACKS_PATH: PACKS_PATH, name: name)
|
55
|
+
template = File.read(File.expand_path("../options/#{example}.rb", __dir__))
|
56
|
+
erbtemplate = ERB.new(template).result(namespace.instance_eval { binding })
|
57
|
+
eval erbtemplate
|
94
58
|
end
|
95
59
|
end
|
data/lib/install/setup.rb
CHANGED
@@ -1,18 +1,25 @@
|
|
1
|
-
say "Adding
|
1
|
+
say "Adding @vue/test-utils and other Jest devdependencies"
|
2
|
+
run "yarn add @vue/test-utils jest jest-serializer-vue vue-jest babel-jest --dev --no-progress --silent"
|
3
|
+
|
4
|
+
say "Setup Vue on Rails"
|
2
5
|
copy_file "#{__dir__}/config/alias.js", Rails.root.join("config/webpack/alias/alias.js").to_s
|
3
6
|
|
4
|
-
say "Adding alias configuration to config/webpack/environment.js"
|
7
|
+
# say "Adding alias configuration to config/webpack/environment.js"
|
5
8
|
insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
|
6
9
|
"const alias = require('./alias/alias')\n",
|
7
10
|
after: "require('@rails/webpacker')\n"
|
8
11
|
|
9
|
-
|
12
|
+
pack_tag = <<-eos
|
13
|
+
<%= javascript_pack_tag 'application' %>
|
14
|
+
<%= stylesheet_pack_tag 'application' %>
|
15
|
+
eos
|
16
|
+
|
17
|
+
# say "Added javascript_packs_tag and stylesheet_packs_tag into head"
|
10
18
|
insert_into_file Rails.root.join("app/views/layouts/application.html.erb").to_s,
|
11
|
-
|
12
|
-
<%= stylesheet_pack_tag 'application' %>\n",
|
19
|
+
pack_tag,
|
13
20
|
before: " </head>\n"
|
14
21
|
|
15
|
-
say "
|
22
|
+
# say "Added hello vue example"
|
16
23
|
insert_into_file Rails.root.join("app/javascript/packs/application.js").to_s,
|
17
24
|
"\nrequire('./hello_vue')\n",
|
18
25
|
after: "console.log('Hello World from Webpacker')\n"
|
@@ -23,11 +30,11 @@ insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
|
|
23
30
|
|
24
31
|
scripts = <<-eos
|
25
32
|
"scripts": {
|
26
|
-
"
|
27
|
-
"webpack-dev-server": "./bin/webpack-dev-server",
|
28
|
-
"rails assets:precompile": "yarn install; rails assets:precompile",
|
33
|
+
"yarn test": "jest",
|
29
34
|
"yarn install": "yarn install",
|
30
|
-
"
|
35
|
+
"rails assets:precompile": "yarn install; rails assets:precompile",
|
36
|
+
"rails server": "rails server",
|
37
|
+
"webpack-dev-server": "./bin/webpack-dev-server"
|
31
38
|
},
|
32
39
|
"jest": {
|
33
40
|
"moduleFileExtensions": [
|
@@ -47,12 +54,12 @@ scripts = <<-eos
|
|
47
54
|
},
|
48
55
|
eos
|
49
56
|
|
50
|
-
say "
|
57
|
+
# say "Added scripts and Jest configuration to package.json"
|
51
58
|
insert_into_file Rails.root.join("package.json").to_s,
|
52
59
|
"#{scripts}",
|
53
60
|
after: "\"private\": true,\n"
|
54
61
|
|
55
|
-
say "Adding test presets to .babelrc"
|
62
|
+
# say "Adding test presets to .babelrc"
|
56
63
|
babelrc = <<-eos
|
57
64
|
"env": {
|
58
65
|
"test": {
|
@@ -67,5 +74,9 @@ insert_into_file Rails.root.join(".babelrc").to_s,
|
|
67
74
|
"#{babelrc}",
|
68
75
|
before: " \"presets\": ["
|
69
76
|
|
70
|
-
say "Adding
|
71
|
-
|
77
|
+
# say "Adding foreman's Procfile"
|
78
|
+
template "#{__dir__}/Procfile", Rails.root.join("Procfile").to_s
|
79
|
+
|
80
|
+
# say "Enabling Specific Page Vue"
|
81
|
+
gsub_file Rails.root.join("app/views/layouts/application.html.erb").to_s,
|
82
|
+
/<body>/, '<body class="<%= specific_page_vue %>">'
|
data/lib/install/spv.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
gsub_file Rails.root.join("app/views/layouts/application.html.erb").to_s,
|
2
|
+
/<body>/, '<body class="<%= specific_page_vue %>">'
|
3
|
+
|
4
|
+
pack_tag = <<-eos
|
5
|
+
<%= javascript_pack_tag 'application' %>
|
6
|
+
<%= stylesheet_pack_tag 'application' %>
|
7
|
+
eos
|
8
|
+
|
9
|
+
# say "Added javascript_packs_tag and stylesheet_packs_tag into head"
|
10
|
+
insert_into_file Rails.root.join("app/views/layouts/application.html.erb").to_s,
|
11
|
+
pack_tag,
|
12
|
+
before: " </head>\n"
|
13
|
+
|
14
|
+
vue_on_rails = <<-eos
|
15
|
+
//= vue-on-rails
|
16
|
+
eos
|
17
|
+
|
18
|
+
insert_into_file Rails.root.join("app/assets/javascripts/application.js").to_s,
|
19
|
+
vue_on_rails,
|
20
|
+
before: "//= require_tree ."
|
data/lib/install/test.rb
CHANGED
@@ -43,4 +43,4 @@ insert_into_file Rails.root.join(".babelrc").to_s,
|
|
43
43
|
before: " \"presets\": ["
|
44
44
|
|
45
45
|
say "Adding @vue/test-util and other Jest dependencies"
|
46
|
-
run "yarn add jest-serializer-vue vue-jest babel-jest"
|
46
|
+
run "yarn add jest-serializer-vue vue-jest babel-jest --no-progress --silent"
|
data/lib/install/turbolinks.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
template "
|
3
|
-
|
1
|
+
# template "packs/pack.js.erb", "#{PACKS_PATH}/#{name}.js"
|
2
|
+
# template "sfc/single-file-component.vue", "#{PARTS_PATH}/#{name}.vue"
|
3
|
+
run "yarn list vue-turbolinks --no-progress --silent"
|
data/lib/install/ui.rb
CHANGED
data/lib/install/vuex.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
-
say "Adding Vuex & Vuex Rails Plugins to Vue on Rails"
|
2
|
-
run "yarn add vuex vuex-rails-plugins"
|
1
|
+
# say "Adding Vuex & Vuex Rails Plugins to Vue on Rails"
|
2
|
+
# run "yarn add vuex vuex-rails-plugins"
|
3
3
|
|
4
|
-
insert_into_file "#{PACKS_PATH}/#{name}.js" ,
|
5
|
-
"import Vuex from 'vuex'",
|
6
|
-
after: "import Vue from 'vue'\n"
|
4
|
+
# insert_into_file "#{PACKS_PATH}/#{name}.js" ,
|
5
|
+
# "import Vuex from 'vuex'",
|
6
|
+
# after: "import Vue from 'vue'\n"
|
7
7
|
|
8
|
-
insert_into_file "#{PACKS_PATH}/#{name}.js",
|
9
|
-
"Vue.use(Vuex)\n",
|
10
|
-
before: "document.addEventListener"
|
8
|
+
# insert_into_file "#{PACKS_PATH}/#{name}.js",
|
9
|
+
# "Vue.use(Vuex)\n",
|
10
|
+
# before: "document.addEventListener"
|
11
|
+
|
12
|
+
puts "vuex"
|
data/lib/tasks/assets.rake
CHANGED
data/lib/tasks/info.rake
CHANGED
data/lib/tasks/vue.rake
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
bin_path = ENV["BUNDLE_BIN"] || "./bin"
|
2
|
+
|
3
|
+
TASKS = {
|
4
|
+
turbolinks: "Check Vue-turbolinks ready",
|
5
|
+
setup: "Check Vue on Rails ready",
|
6
|
+
test: "Check Jest tests ready",
|
7
|
+
vuex: "Check Vuex ready",
|
8
|
+
ui: "Check Vue-ui ready",
|
9
|
+
spv: "Check Specific-page Vue ready?"
|
10
|
+
}.freeze
|
11
|
+
|
12
|
+
namespace :vue do
|
13
|
+
TASKS.each do |task_name, description|
|
14
|
+
desc description
|
15
|
+
task task_name do
|
16
|
+
template = File.expand_path("../install/#{task_name}.rb", __dir__)
|
17
|
+
base_path =
|
18
|
+
if Rails::VERSION::MAJOR >= 5
|
19
|
+
"#{RbConfig.ruby} #{bin_path}/rails app:template"
|
20
|
+
else
|
21
|
+
"#{RbConfig.ruby} #{bin_path}/rake rails:template"
|
22
|
+
end
|
23
|
+
|
24
|
+
exec "#{base_path} LOCATION=#{template}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/vuejs/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vuejs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.0.
|
4
|
+
version: 1.1.0.beta9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Lim
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -46,7 +46,6 @@ executables: []
|
|
46
46
|
extensions: []
|
47
47
|
extra_rdoc_files: []
|
48
48
|
files:
|
49
|
-
- LICENSE
|
50
49
|
- README.md
|
51
50
|
- app/controllers/vue_controller.rb
|
52
51
|
- app/helpers/syntax_helper.rb
|
@@ -59,18 +58,30 @@ files:
|
|
59
58
|
- lib/generators/generator_templates/sfc/single-file-component.vue
|
60
59
|
- lib/generators/generator_templates/tests/unit.test.js.erb
|
61
60
|
- lib/generators/generator_templates/turbolinks/turbolinks-pack.js.erb
|
62
|
-
- lib/generators/
|
61
|
+
- lib/generators/options/click.rb
|
62
|
+
- lib/generators/options/form.rb
|
63
|
+
- lib/generators/options/list.rb
|
64
|
+
- lib/generators/options/modal.rb
|
65
|
+
- lib/generators/options/seperate.rb
|
66
|
+
- lib/generators/options/single.rb
|
67
|
+
- lib/generators/options/table.rb
|
68
|
+
- lib/generators/options/test.rb
|
69
|
+
- lib/generators/options/turbolinks-seperate.rb
|
70
|
+
- lib/generators/options/turbolinks-single.rb
|
71
|
+
- lib/generators/options/vuex.rb
|
63
72
|
- lib/generators/vue/USAGE
|
64
73
|
- lib/generators/vue/vue_generator.rb
|
74
|
+
- lib/install/Procfile
|
65
75
|
- lib/install/config/alias.js
|
66
76
|
- lib/install/setup.rb
|
77
|
+
- lib/install/spv.rb
|
67
78
|
- lib/install/test.rb
|
68
79
|
- lib/install/turbolinks.rb
|
69
80
|
- lib/install/ui.rb
|
70
81
|
- lib/install/vuex.rb
|
71
82
|
- lib/tasks/assets.rake
|
72
83
|
- lib/tasks/info.rake
|
73
|
-
- lib/tasks/
|
84
|
+
- lib/tasks/vue.rake
|
74
85
|
- lib/vuejs.rb
|
75
86
|
- lib/vuejs/post_message.rb
|
76
87
|
- lib/vuejs/version.rb
|
data/LICENSE
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
The MIT License (MIT)
|
2
|
-
|
3
|
-
Copyright (c) 2016 Bryan Lim (@ytbryan)
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
-
SOFTWARE.
|
@@ -1,22 +0,0 @@
|
|
1
|
-
// Generated by Vuejs gem ~> github.com/ytbryan/vuejs
|
2
|
-
|
3
|
-
export default {
|
4
|
-
// components: {},
|
5
|
-
// mixins: [],
|
6
|
-
// props: {},
|
7
|
-
data: function() {
|
8
|
-
return {
|
9
|
-
message: "Hello <%= name %>!"
|
10
|
-
};
|
11
|
-
},
|
12
|
-
watch: {
|
13
|
-
onMounted: function(response){
|
14
|
-
this.items = response.data
|
15
|
-
}
|
16
|
-
},
|
17
|
-
methods: {
|
18
|
-
click: function(response){
|
19
|
-
console.log("clicked")
|
20
|
-
}
|
21
|
-
}
|
22
|
-
};
|
data/lib/tasks/setup.rake
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
bin_path = ENV["BUNDLE_BIN"] || "./bin"
|
2
|
-
namespace :vue do
|
3
|
-
desc "setup your vue on rails project"
|
4
|
-
task :setup do
|
5
|
-
template = File.expand_path("../install/setup.rb", __dir__)
|
6
|
-
base_path =
|
7
|
-
if Rails::VERSION::MAJOR >= 5
|
8
|
-
"#{RbConfig.ruby} #{bin_path}/rails app:template"
|
9
|
-
else
|
10
|
-
"#{RbConfig.ruby} #{bin_path}/rake rails:template"
|
11
|
-
end
|
12
|
-
|
13
|
-
exec "#{base_path} LOCATION=#{template}"
|
14
|
-
end
|
15
|
-
|
16
|
-
desc "install turbolinks"
|
17
|
-
task :turbolinks do
|
18
|
-
template = File.expand_path("../install/turbolinks.rb", __dir__)
|
19
|
-
base_path =
|
20
|
-
if Rails::VERSION::MAJOR >= 5
|
21
|
-
"#{RbConfig.ruby} #{bin_path}/rails app:template"
|
22
|
-
else
|
23
|
-
"#{RbConfig.ruby} #{bin_path}/rake rails:template"
|
24
|
-
end
|
25
|
-
|
26
|
-
exec "#{base_path} LOCATION=#{template}"
|
27
|
-
end
|
28
|
-
|
29
|
-
desc "setup vue on rails to be ready for Jest tests"
|
30
|
-
task :test do
|
31
|
-
template = File.expand_path("../install/test.rb", __dir__)
|
32
|
-
base_path =
|
33
|
-
if Rails::VERSION::MAJOR >= 5
|
34
|
-
"#{RbConfig.ruby} #{bin_path}/rails app:template"
|
35
|
-
else
|
36
|
-
"#{RbConfig.ruby} #{bin_path}/rake rails:template"
|
37
|
-
end
|
38
|
-
|
39
|
-
exec "#{base_path} LOCATION=#{template}"
|
40
|
-
end
|
41
|
-
|
42
|
-
desc "install vuex and vuex-rails-plugins"
|
43
|
-
task :vuex do
|
44
|
-
template = File.expand_path("../install/vuex.rb", __dir__)
|
45
|
-
base_path =
|
46
|
-
if Rails::VERSION::MAJOR >= 5
|
47
|
-
"#{RbConfig.ruby} #{bin_path}/rails app:template"
|
48
|
-
else
|
49
|
-
"#{RbConfig.ruby} #{bin_path}/rake rails:template"
|
50
|
-
end
|
51
|
-
|
52
|
-
exec "#{base_path} LOCATION=#{template}"
|
53
|
-
end
|
54
|
-
|
55
|
-
desc "make this rails project vue-ui compatible"
|
56
|
-
task :ui do
|
57
|
-
template = File.expand_path("../install/ui.rb", __dir__)
|
58
|
-
base_path =
|
59
|
-
if Rails::VERSION::MAJOR >= 5
|
60
|
-
"#{RbConfig.ruby} #{bin_path}/rails app:template"
|
61
|
-
else
|
62
|
-
"#{RbConfig.ruby} #{bin_path}/rake rails:template"
|
63
|
-
end
|
64
|
-
|
65
|
-
exec "#{base_path} LOCATION=#{template}"
|
66
|
-
end
|
67
|
-
|
68
|
-
desc "is this rail project specific-page vue enabled?"
|
69
|
-
task :spv do
|
70
|
-
puts "check if spv is enabled and setup?"
|
71
|
-
end
|
72
|
-
end
|