@@ -7,12 +7,56 @@ class InstallGenerator < Rails::Generators::Base
7
7
include Generators ::Utils ::InstanceMethods
8
8
9
9
argument :_namespace , type : :string , required : false , desc : 'RailsAdmin url namespace'
10
+ class_option :asset , type : :string , required : false , default : nil , desc : 'Asset delivery method [options: webpack, webpacker, sprockets]'
10
11
desc 'RailsAdmin installation generator'
11
12
12
13
def install
13
14
namespace = ask_for ( 'Where do you want to mount rails_admin?' , 'admin' , _namespace )
14
15
route ( "mount RailsAdmin::Engine => '/#{ namespace } ', as: 'rails_admin'" )
15
16
template 'initializer.erb' , 'config/initializers/rails_admin.rb'
17
+ display "Using [#{ asset } ] for asset delivery method"
18
+ case asset
19
+ when 'webpack'
20
+ configure_for_webpack
21
+ when 'webpacker'
22
+ configure_for_webpacker5
23
+ when 'sprockets'
24
+ configure_for_sprockets
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ def asset
31
+ return options [ 'asset' ] if options [ 'asset' ]
32
+
33
+ if Rails . root . join ( 'webpack.config.js' ) . exist?
34
+ 'webpack'
35
+ elsif defined? ( Webpacker )
36
+ 'webpacker'
37
+ else
38
+ 'sprockets'
39
+ end
40
+ end
41
+
42
+ def configure_for_sprockets
43
+ gem 'sassc-rails'
44
+ end
45
+
46
+ def configure_for_webpacker5
47
+ run "yarn add rails_admin@#{ RailsAdmin ::Version . js } "
48
+ @scss_relative_dir = '../stylesheets/'
49
+ template 'rails_admin.js.erb' , 'app/javascript/packs/rails_admin.js'
50
+ template 'rails_admin.scss' , 'app/javascript/stylesheets/rails_admin.scss'
51
+ template 'environment.js' , 'config/webpack/environment.js'
52
+ end
53
+
54
+ def configure_for_webpack
55
+ run "yarn add rails_admin@#{ RailsAdmin ::Version . js } css-loader mini-css-extract-plugin sass sass-loader"
56
+ @scss_relative_dir = './'
57
+ template 'rails_admin.js.erb' , 'app/javascript/rails_admin.js'
58
+ template 'rails_admin.scss' , 'app/javascript/rails_admin.scss'
59
+ template 'webpack.config.js' , 'webpack.config.js'
16
60
end
17
61
end
18
62
end
0 commit comments