lib/generators/hyperloop/install_generator.rb in hyper-rails-0.3.0 vs lib/generators/hyperloop/install_generator.rb in hyper-rails-0.4.0
- old
+ new
@@ -1,42 +1,58 @@
require 'rails/generators'
module Hyperloop
class InstallGenerator < Rails::Generators::Base
- class_option :'reactive-record', type: :boolean
+ class_option :'hyper-mesh', type: :boolean
class_option :'opal-jquery', type: :boolean
- class_option :'reactrb-router', type: :boolean
+ class_option :'hyper-router', type: :boolean
class_option :all, type: :boolean
def inject_react_file_js
- inject_into_file 'app/assets/javascripts/application.js',
- after: "// about supported directives.\n" do
+ prepend_file 'app/assets/javascripts/application.js' do
<<-'JS'
+// added by hyper-rails: These lines must preceed other requires especially turbo_links
//= require 'components'
//= require 'react_ujs'
JS
end
- inject_into_file 'app/assets/javascripts/application.js',
- after: "//= require jquery_ujs\n" do
- <<-'JS'
-Opal.load('components');
- JS
- end
+ append_file 'app/assets/javascripts/application.js', "Opal.load('components');\n"
end
def inject_engine_to_routes
- if options[:'reactive-record'] || options[:all]
- route 'mount ReactiveRecord::Engine => \'/rr\''
+ if options[:'hyper-mesh'] || options[:all]
+ route 'mount HyperMesh::Engine => \'/rr\''
end
end
def create_components_directory
create_file 'app/views/components/.keep', ''
- if options[:'reactive-record'] || options[:all]
+ if options[:'hyper-mesh'] || options[:all]
create_file 'app/models/public/.keep', ''
end
end
+ def create_policies_directory
+ if options[:'hyper-mesh'] || options[:all]
+ create_file 'app/policies/application_policy.rb', <<-RUBY
+# app/policies/application_policy
+
+# Policies regulate access to your public models
+# The following policy will open up full access (but only in development)
+# The policy system is very flexible and powerful. See the documentation
+# for complete details.
+class ApplicationPolicy
+ # Allow any session to connect:
+ always_allow_connection
+ # Send all attributes from all public models
+ regulate_all_broadcasts { |policy| policy.send_all }
+ # Allow all changes to public models
+ allow_change(to: :all, on: [:create, :update, :destroy]) { true }
+end if Rails.env.development?
+ RUBY
+ end
+ end
+
def create_manifests
create_file 'app/views/components.rb', <<-FILE
# app/views/components.rb
require 'opal'
require 'react/react-source'
@@ -46,32 +62,32 @@
require 'browser'
require 'browser/interval'
require 'browser/delay'
# add any additional requires that can ONLY run on client here
end
-#{"require 'reactrb-router'\nrequire 'react_router'" if options[:'reactive-router'] || options[:all]}
-#{'require \'reactive-record\'' if options[:'reactive-record'] || options[:all]}
-#{'require \'models\'' if options[:'reactive-record'] || options[:all]}
+#{"require 'hyper-router'\nrequire 'react_router'" if options[:'hyper-router'] || options[:all]}
+#{'require \'hyper-mesh\'' if options[:'hyper-mesh'] || options[:all]}
+#{'require \'models\'' if options[:'hyper-mesh'] || options[:all]}
require_tree './components'
FILE
- if options[:'reactive-record'] || options[:all]
+ if options[:'hyper-mesh'] || options[:all]
create_file 'app/models/models.rb', <<-FILE
# app/models/models.rb
require_tree './public'
FILE
end
end
def add_config
application 'config.assets.paths << ::Rails.root.join(\'app\', \'models\').to_s'
application 'config.autoload_paths += %W(#{config.root}/app/views/components)'
- if options[:'reactive-record'] || options[:all]
+ if options[:'hyper-mesh'] || options[:all]
application 'config.autoload_paths += %W(#{config.root}/app/models/public)'
end
application 'config.eager_load_paths += %W(#{config.root}/app/views/components)'
- if options[:'reactive-record'] || options[:all]
+ if options[:'hyper-mesh'] || options[:all]
application 'config.eager_load_paths += %W(#{config.root}/app/models/public)'
end
application 'config.watchable_files.concat Dir["#{config.root}/app/views/**/*.rb"]',
env: :development
application 'config.react.variant = :development', env: :development
@@ -83,13 +99,13 @@
gem "opal-browser"
gem 'hyper-react'
gem 'therubyracer', platforms: :ruby
# optional gems
- if options[:'reactrb-router'] || options[:all]
+ if options[:'hyper-router'] || options[:all]
gem 'react-router-rails', '~> 0.13.3'
- gem 'reactrb-router'
+ gem 'hyper-router'
end
- gem 'reactive-record' if options[:'reactive-record'] || options[:all]
+ gem 'hyper-mesh' if options[:'hyper-mesh'] || options[:all]
end
end
end