react_on_rails 1.1.1 → 1.2.0.rc1
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 +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -0
- data/.travis.yml +2 -8
- data/Dockerfile_tests +1 -1
- data/Gemfile +68 -2
- data/README.md +21 -15
- data/Rakefile +3 -109
- data/app/assets/javascripts/react_on_rails.js +10 -0
- data/docker-compose.yml +0 -6
- data/docs/additional_reading/webpack.md +46 -0
- data/docs/generator_testing.md +20 -0
- data/lib/generators/react_on_rails/base_generator.rb +49 -9
- data/lib/generators/react_on_rails/bootstrap_generator.rb +14 -29
- data/lib/generators/react_on_rails/dev_tests_generator.rb +30 -0
- data/lib/generators/react_on_rails/install_generator.rb +14 -3
- data/lib/generators/react_on_rails/templates/base/base/app/views/hello_world/index.html.erb.tt +2 -3
- data/lib/generators/react_on_rails/templates/base/base/client/package.json.tt +26 -23
- data/lib/generators/react_on_rails/templates/base/base/client/{webpack.client.hot.config.js → webpack.client.hot.config.js.tt} +3 -1
- data/lib/generators/react_on_rails/templates/base/base/lib/tasks/{assets.rake → assets.rake.tt} +2 -0
- data/lib/generators/react_on_rails/templates/base/server_rendering/client/webpack.server.rails.config.js +1 -1
- data/lib/generators/react_on_rails/templates/dev_tests/.rspec +2 -0
- data/lib/generators/react_on_rails/templates/dev_tests/spec/features/hello_world_spec.rb +25 -0
- data/lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb +57 -0
- data/lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb +21 -0
- data/lib/generators/react_on_rails/templates/dev_tests/spec/spec_helper.rb +95 -0
- data/lib/react_on_rails/version.rb +1 -1
- data/rakelib/docker.rake +33 -0
- data/rakelib/dummy_apps.rake +29 -0
- data/rakelib/example_type.rb +160 -0
- data/rakelib/examples.rake +103 -0
- data/rakelib/examples_config.yml +19 -0
- data/rakelib/lint.rake +37 -0
- data/rakelib/run_rspec.rake +65 -0
- data/rakelib/task_helpers.rb +44 -0
- data/ruby-lint.yml +1 -0
- metadata +22 -9
- data/Dockerfile_ci +0 -12
- data/docs/generator_testing_script.md +0 -49
- data/lib/generators/react_on_rails/templates/client/README.md +0 -97
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            example_type_data:
         | 
| 2 | 
            +
              -
         | 
| 3 | 
            +
                name: basic
         | 
| 4 | 
            +
                generator_options: ""
         | 
| 5 | 
            +
              -
         | 
| 6 | 
            +
                name: basic-server-rendering
         | 
| 7 | 
            +
                generator_options: --server-rendering
         | 
| 8 | 
            +
              -
         | 
| 9 | 
            +
                name: redux
         | 
| 10 | 
            +
                generator_options: --redux --server-rendering
         | 
| 11 | 
            +
              -
         | 
| 12 | 
            +
                name: redux-server-rendering
         | 
| 13 | 
            +
                generator_options: --redux --server-rendering
         | 
| 14 | 
            +
              -
         | 
| 15 | 
            +
                name: heroku-deployment
         | 
| 16 | 
            +
                generator_options: --heroku-deployment
         | 
| 17 | 
            +
              -
         | 
| 18 | 
            +
                name: skip-bootstrap
         | 
| 19 | 
            +
                generator_options: --skip-bootstrap
         | 
    
        data/rakelib/lint.rake
    ADDED
    
    | @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            require_relative "task_helpers"
         | 
| 2 | 
            +
            include ReactOnRails::TaskHelpers
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            namespace :lint do
         | 
| 5 | 
            +
              desc "Run Rubocop as shell"
         | 
| 6 | 
            +
              task :rubocop do
         | 
| 7 | 
            +
                sh_in_dir(gem_root, "rubocop .")
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              desc "Run ruby-lint as shell"
         | 
| 11 | 
            +
              task :ruby do
         | 
| 12 | 
            +
                sh_in_dir(gem_root, "ruby-lint app spec lib")
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              desc "Run scss-lint as shell"
         | 
| 16 | 
            +
              task :scss do
         | 
| 17 | 
            +
                sh_in_dir(gem_root, "scss-lint spec/dummy/app/assets/stylesheets/")
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              desc "Run eslint as shell"
         | 
| 21 | 
            +
              task :eslint do
         | 
| 22 | 
            +
                sh_in_dir(gem_root, "eslint . --ext .jsx and .js")
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              desc "Run jscs from shell"
         | 
| 26 | 
            +
              task :jscs do
         | 
| 27 | 
            +
                sh_in_dir(gem_root, "jscs -e -v .")
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              desc "Run all eslint, jscs, rubocop linters. Skip ruby-lint and scss"
         | 
| 31 | 
            +
              task lint: [:eslint, :jscs, :rubocop] do
         | 
| 32 | 
            +
                puts "Completed all linting"
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
            end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            desc "Runs all linters. Run `rake -D lint` to see all available lint options"
         | 
| 37 | 
            +
            task lint: ["lint:lint"]
         | 
| @@ -0,0 +1,65 @@ | |
| 1 | 
            +
            require "coveralls/rake/task"
         | 
| 2 | 
            +
            require "pathname"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            require_relative "task_helpers"
         | 
| 5 | 
            +
            require_relative "example_type"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            include ReactOnRails::TaskHelpers
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            namespace :run_rspec do
         | 
| 10 | 
            +
              desc "Run RSpec for top level only"
         | 
| 11 | 
            +
              task :gem do
         | 
| 12 | 
            +
                run_tests_in("", rspec_args: "spec/react_on_rails")
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              desc "Run RSpec for spec/dummy only"
         | 
| 16 | 
            +
              task dummy: ["dummy_apps:dummy_app"] do
         | 
| 17 | 
            +
                run_tests_in("spec/dummy", env_vars: "DRIVER=selenium_firefox")
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              desc "Run RSpec for spec/dummy_react_013 only"
         | 
| 21 | 
            +
              task dummy_react_013: ["dummy_apps:dummy_react_013_app"] do
         | 
| 22 | 
            +
                run_tests_in("spec/dummy-react-013", env_vars: "DRIVER=selenium_firefox")
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              # Dynamically define Rake tasks for each example app found in the examples directory
         | 
| 26 | 
            +
              ExampleType.all.each do |example_type|
         | 
| 27 | 
            +
                desc "Runs RSpec for #{example_type.name_pretty} only"
         | 
| 28 | 
            +
                task example_type.rspec_task_name_short => example_type.prepare_task_name do
         | 
| 29 | 
            +
                  run_tests_in("#{File.basename(examples_dir)}/#{example_type.name}") # have to use relative path
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              desc "Runs Rspec for example apps only"
         | 
| 34 | 
            +
              task examples: "examples:prepare_all" do
         | 
| 35 | 
            +
                ExampleType.all.each { |example_type| Rake::Task[example_type.rspec_task_name].invoke }
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              desc "(HACK) Run RSpec on spec/empty_spec in order to have SimpleCov generate a coverage report from cache"
         | 
| 39 | 
            +
              task :empty do
         | 
| 40 | 
            +
                sh %(COVERAGE=true rspec spec/empty_spec.rb)
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              Coveralls::RakeTask.new
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              task run_rspec: [:gem, :dummy, :dummy_react_013, :examples, :empty, "coveralls:push"] do
         | 
| 46 | 
            +
                puts "Completed all RSpec tests"
         | 
| 47 | 
            +
              end
         | 
| 48 | 
            +
            end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            desc "Runs all tests. Run `rake -D run_rspec` to see all available test options"
         | 
| 51 | 
            +
            task run_rspec: ["run_rspec:run_rspec"]
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            private
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            # Runs rspec in the given directory (if string is passed, assumed to be relative
         | 
| 56 | 
            +
            # to root of the gem.
         | 
| 57 | 
            +
            # TEST_ENV_COMMAND_NAME is used to make SimpleCov.command_name unique in order to
         | 
| 58 | 
            +
            # prevent a name collision. Defaults to the given directory's name.
         | 
| 59 | 
            +
            def run_tests_in(dir, options = {})
         | 
| 60 | 
            +
              dir = Pathname.new(File.join(gem_root, dir)) if dir.is_a?(String)
         | 
| 61 | 
            +
              command_name = options.fetch(:command_name, dir.basename)
         | 
| 62 | 
            +
              rspec_args = options.fetch(:rspec_args, "")
         | 
| 63 | 
            +
              env_vars = %(#{options.fetch(env_vars, '')} COVERAGE=true TEST_ENV_COMMAND_NAME="#{command_name}")
         | 
| 64 | 
            +
              sh_in_dir(dir, "#{env_vars} bundle exec rspec #{rspec_args}")
         | 
| 65 | 
            +
            end
         | 
| @@ -0,0 +1,44 @@ | |
| 1 | 
            +
            module ReactOnRails
         | 
| 2 | 
            +
              module TaskHelpers
         | 
| 3 | 
            +
                # Returns the root folder of the react_on_rails gem
         | 
| 4 | 
            +
                def gem_root
         | 
| 5 | 
            +
                  File.expand_path("../../.", __FILE__)
         | 
| 6 | 
            +
                end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                # Returns the folder where examples are located
         | 
| 9 | 
            +
                def examples_dir
         | 
| 10 | 
            +
                  File.join(gem_root, "examples")
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def dummy_app_dirs
         | 
| 14 | 
            +
                  %w(spec/dummy spec/dummy-react-013).map { |rel_dir| File.join(gem_root, rel_dir) }
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                # Executes a string or an array of strings in a shell in the given directory
         | 
| 18 | 
            +
                def sh_in_dir(dir, shell_commands)
         | 
| 19 | 
            +
                  shell_commands = [shell_commands] if shell_commands.is_a?(String)
         | 
| 20 | 
            +
                  shell_commands.each { |shell_command| sh %(cd #{dir} && #{shell_command.strip}) }
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def bundle_install_in(dir)
         | 
| 24 | 
            +
                  sh_in_dir(dir, "bundle install")
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                # Runs bundle exec using that directory's Gemfile
         | 
| 28 | 
            +
                def bundle_exec(dir:, args:, env_vars: "")
         | 
| 29 | 
            +
                  sh_in_dir(dir, "#{env_vars} #{args}")
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                def generators_source_dir
         | 
| 33 | 
            +
                  File.join(gem_root, "lib/generators/react_on_rails")
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                def symbolize_keys(hash)
         | 
| 37 | 
            +
                  hash.each_with_object({}) do |(key, value), new_hash|
         | 
| 38 | 
            +
                    new_key = key.is_a?(String) ? key.to_sym : key
         | 
| 39 | 
            +
                    new_value = value.is_a?(Hash) ? symbolize_keys(value) : value
         | 
| 40 | 
            +
                    new_hash[new_key] = new_value
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
            end
         | 
    
        data/ruby-lint.yml
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: react_on_rails
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.2.0.rc1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Justin Gordon
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-12-07 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -140,7 +140,6 @@ files: | |
| 140 140 | 
             
            - ".rubocop.yml"
         | 
| 141 141 | 
             
            - ".scss-lint.yml"
         | 
| 142 142 | 
             
            - ".travis.yml"
         | 
| 143 | 
            -
            - Dockerfile_ci
         | 
| 144 143 | 
             
            - Dockerfile_tests
         | 
| 145 144 | 
             
            - Gemfile
         | 
| 146 145 | 
             
            - README.md
         | 
| @@ -157,17 +156,19 @@ files: | |
| 157 156 | 
             
            - docs/additional_reading/react_router.md
         | 
| 158 157 | 
             
            - docs/additional_reading/server_rendering_tips.md
         | 
| 159 158 | 
             
            - docs/additional_reading/tips.md
         | 
| 159 | 
            +
            - docs/additional_reading/webpack.md
         | 
| 160 160 | 
             
            - docs/code_of_conduct.md
         | 
| 161 161 | 
             
            - docs/coding-style/linters.md
         | 
| 162 162 | 
             
            - docs/coding-style/style.md
         | 
| 163 163 | 
             
            - docs/contributing.md
         | 
| 164 | 
            -
            - docs/ | 
| 164 | 
            +
            - docs/generator_testing.md
         | 
| 165 165 | 
             
            - docs/install_and_releasing.md
         | 
| 166 166 | 
             
            - docs/sample_generated_js/README.md
         | 
| 167 167 | 
             
            - docs/sample_generated_js/client-generated.js
         | 
| 168 168 | 
             
            - docs/sample_generated_js/server-generated.js
         | 
| 169 169 | 
             
            - lib/generators/react_on_rails/base_generator.rb
         | 
| 170 170 | 
             
            - lib/generators/react_on_rails/bootstrap_generator.rb
         | 
| 171 | 
            +
            - lib/generators/react_on_rails/dev_tests_generator.rb
         | 
| 171 172 | 
             
            - lib/generators/react_on_rails/generator_helper.rb
         | 
| 172 173 | 
             
            - lib/generators/react_on_rails/heroku_deployment_generator.rb
         | 
| 173 174 | 
             
            - lib/generators/react_on_rails/install_generator.rb
         | 
| @@ -187,10 +188,10 @@ files: | |
| 187 188 | 
             
            - lib/generators/react_on_rails/templates/base/base/client/package.json.tt
         | 
| 188 189 | 
             
            - lib/generators/react_on_rails/templates/base/base/client/server.js
         | 
| 189 190 | 
             
            - lib/generators/react_on_rails/templates/base/base/client/webpack.client.base.config.js.tt
         | 
| 190 | 
            -
            - lib/generators/react_on_rails/templates/base/base/client/webpack.client.hot.config.js
         | 
| 191 | 
            +
            - lib/generators/react_on_rails/templates/base/base/client/webpack.client.hot.config.js.tt
         | 
| 191 192 | 
             
            - lib/generators/react_on_rails/templates/base/base/client/webpack.client.rails.config.js
         | 
| 192 193 | 
             
            - lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb
         | 
| 193 | 
            -
            - lib/generators/react_on_rails/templates/base/base/lib/tasks/assets.rake
         | 
| 194 | 
            +
            - lib/generators/react_on_rails/templates/base/base/lib/tasks/assets.rake.tt
         | 
| 194 195 | 
             
            - lib/generators/react_on_rails/templates/base/base/lib/tasks/linters.rake.tt
         | 
| 195 196 | 
             
            - lib/generators/react_on_rails/templates/base/base/package.json
         | 
| 196 197 | 
             
            - lib/generators/react_on_rails/templates/base/server_rendering/client/app/bundles/HelloWorld/startup/serverGlobals.jsx
         | 
| @@ -200,7 +201,11 @@ files: | |
| 200 201 | 
             
            - lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_pre-bootstrap.scss
         | 
| 201 202 | 
             
            - lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_react-on-rails-sass-helper.scss
         | 
| 202 203 | 
             
            - lib/generators/react_on_rails/templates/bootstrap/client/bootstrap-sass.config.js
         | 
| 203 | 
            -
            - lib/generators/react_on_rails/templates/ | 
| 204 | 
            +
            - lib/generators/react_on_rails/templates/dev_tests/.rspec
         | 
| 205 | 
            +
            - lib/generators/react_on_rails/templates/dev_tests/spec/features/hello_world_spec.rb
         | 
| 206 | 
            +
            - lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb
         | 
| 207 | 
            +
            - lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb
         | 
| 208 | 
            +
            - lib/generators/react_on_rails/templates/dev_tests/spec/spec_helper.rb
         | 
| 204 209 | 
             
            - lib/generators/react_on_rails/templates/heroku_deployment/.buildpacks
         | 
| 205 210 | 
             
            - lib/generators/react_on_rails/templates/heroku_deployment/Procfile
         | 
| 206 211 | 
             
            - lib/generators/react_on_rails/templates/heroku_deployment/config/puma.rb
         | 
| @@ -232,6 +237,14 @@ files: | |
| 232 237 | 
             
            - lib/react_on_rails/prerender_error.rb
         | 
| 233 238 | 
             
            - lib/react_on_rails/server_rendering_pool.rb
         | 
| 234 239 | 
             
            - lib/react_on_rails/version.rb
         | 
| 240 | 
            +
            - rakelib/docker.rake
         | 
| 241 | 
            +
            - rakelib/dummy_apps.rake
         | 
| 242 | 
            +
            - rakelib/example_type.rb
         | 
| 243 | 
            +
            - rakelib/examples.rake
         | 
| 244 | 
            +
            - rakelib/examples_config.yml
         | 
| 245 | 
            +
            - rakelib/lint.rake
         | 
| 246 | 
            +
            - rakelib/run_rspec.rake
         | 
| 247 | 
            +
            - rakelib/task_helpers.rb
         | 
| 235 248 | 
             
            - react_on_rails.gemspec
         | 
| 236 249 | 
             
            - ruby-lint.yml
         | 
| 237 250 | 
             
            homepage: https://github.com/shakacode/react_on_rails
         | 
| @@ -249,9 +262,9 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 249 262 | 
             
                  version: '0'
         | 
| 250 263 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 251 264 | 
             
              requirements:
         | 
| 252 | 
            -
              - - " | 
| 265 | 
            +
              - - ">"
         | 
| 253 266 | 
             
                - !ruby/object:Gem::Version
         | 
| 254 | 
            -
                  version:  | 
| 267 | 
            +
                  version: 1.3.1
         | 
| 255 268 | 
             
            requirements: []
         | 
| 256 269 | 
             
            rubyforge_project: 
         | 
| 257 270 | 
             
            rubygems_version: 2.5.0
         | 
    
        data/Dockerfile_ci
    DELETED
    
    | @@ -1,12 +0,0 @@ | |
| 1 | 
            -
            FROM dylangrafmyre/docker-ci
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            WORKDIR /app/
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            COPY ["/lib/react_on_rails/version.rb", "/app/lib/react_on_rails/"]
         | 
| 6 | 
            -
            COPY ["Gemfile", "Gemfile.lock", "react_on_rails.gemspec", "/app/"]
         | 
| 7 | 
            -
            COPY ["/spec/dummy/Gemfile", "/spec/dummy/Gemfile.lock", "/app/spec/dummy/"]
         | 
| 8 | 
            -
            RUN  bundle install --gemfile=spec/dummy/Gemfile
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            ENV DISPLAY :99
         | 
| 11 | 
            -
            ENTRYPOINT service xvfd start \
         | 
| 12 | 
            -
                       && rake ci
         | 
| @@ -1,49 +0,0 @@ | |
| 1 | 
            -
            Per running steps:
         | 
| 2 | 
            -
            
         | 
| 3 | 
            -
            From directory of `react_on_rails`, with a test app named "react_on_rails_gen"
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            ```bash
         | 
| 6 | 
            -
            cd ..
         | 
| 7 | 
            -
            rails new react_on_rails_gen
         | 
| 8 | 
            -
            cd react_on_rails_gen
         | 
| 9 | 
            -
            git init
         | 
| 10 | 
            -
            git add .
         | 
| 11 | 
            -
            git commit -m "Rails new plus react_on_rails"
         | 
| 12 | 
            -
            ```
         | 
| 13 | 
            -
            
         | 
| 14 | 
            -
            Edit the Gemfile, adding these 2 lines:
         | 
| 15 | 
            -
             | 
| 16 | 
            -
            ```ruby
         | 
| 17 | 
            -
            gem 'react_on_rails', path: '../react_on_rails'
         | 
| 18 | 
            -
            ```
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            Note the relative path to the react_on_rails gem.
         | 
| 21 | 
            -
            
         | 
| 22 | 
            -
            ```bash
         | 
| 23 | 
            -
            bundle
         | 
| 24 | 
            -
            git commit -am "added react_on_rails gem"
         | 
| 25 | 
            -
            ```
         | 
| 26 | 
            -
            
         | 
| 27 | 
            -
            You can now mess around with the generator:
         | 
| 28 | 
            -
             | 
| 29 | 
            -
            ```bash
         | 
| 30 | 
            -
            # See available options
         | 
| 31 | 
            -
            rails generate react_on_rails:install --help
         | 
| 32 | 
            -
            # Actual install, for example, with Redux
         | 
| 33 | 
            -
            rails generate react_on_rails:install --redux
         | 
| 34 | 
            -
            ```
         | 
| 35 | 
            -
             | 
| 36 | 
            -
            If you do actually run the generator, then you can see the changes that the generator made, ready for a commit.
         | 
| 37 | 
            -
            
         | 
| 38 | 
            -
            Then run:
         | 
| 39 | 
            -
            
         | 
| 40 | 
            -
            ```bash
         | 
| 41 | 
            -
            cd client
         | 
| 42 | 
            -
            npm install
         | 
| 43 | 
            -
            cd ..
         | 
| 44 | 
            -
            foreman start -f Procfile.dev
         | 
| 45 | 
            -
            ```
         | 
| 46 | 
            -
            
         | 
| 47 | 
            -
            Then visit `localhost:3000/hello_world` to see it.
         | 
| 48 | 
            -
            
         | 
| 49 | 
            -
            That's it!
         | 
| @@ -1,97 +0,0 @@ | |
| 1 | 
            -
            Example NPM Package
         | 
| 2 | 
            -
            ===========================
         | 
| 3 | 
            -
            We've included an example package.json from https://github.com/shakacode/react-webpack-rails-tutorial which should get you started with your React project.
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            Starting the node.js server:
         | 
| 6 | 
            -
            ```
         | 
| 7 | 
            -
            npm start
         | 
| 8 | 
            -
            ```
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            Building client javascript files for production:
         | 
| 11 | 
            -
            ```
         | 
| 12 | 
            -
            npm run build:client
         | 
| 13 | 
            -
            ```
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            Building server javascript files for production:
         | 
| 16 | 
            -
            ```
         | 
| 17 | 
            -
            npm run build:server
         | 
| 18 | 
            -
            ```
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            Building client javascript files for development:
         | 
| 21 | 
            -
            ```
         | 
| 22 | 
            -
            npm run build:dev:client
         | 
| 23 | 
            -
            ```
         | 
| 24 | 
            -
             | 
| 25 | 
            -
            Building server javascript files for development:
         | 
| 26 | 
            -
            ```
         | 
| 27 | 
            -
            npm run build:dev:server
         | 
| 28 | 
            -
            ```
         | 
| 29 | 
            -
             | 
| 30 | 
            -
            Running all linters:
         | 
| 31 | 
            -
            ```
         | 
| 32 | 
            -
            npm run lint
         | 
| 33 | 
            -
            ```
         | 
| 34 | 
            -
             | 
| 35 | 
            -
            Running eslint:
         | 
| 36 | 
            -
            ```
         | 
| 37 | 
            -
            npm run eslint
         | 
| 38 | 
            -
            ```
         | 
| 39 | 
            -
             | 
| 40 | 
            -
            Running jscs:
         | 
| 41 | 
            -
            ```
         | 
| 42 | 
            -
            npm run jscs
         | 
| 43 | 
            -
            ```
         | 
| 44 | 
            -
             | 
| 45 | 
            -
            dependencies vs devDependencies
         | 
| 46 | 
            -
            ===========================
         | 
| 47 | 
            -
            Anything needed for heroku deployment needs to go in "dependencies", and anything not needed for heroku deployment should go in "devDependencies".
         | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
            Updating Node Dependencies
         | 
| 51 | 
            -
            ===========================
         | 
| 52 | 
            -
             | 
| 53 | 
            -
            ```
         | 
| 54 | 
            -
            npm install -g npm-check-updates
         | 
| 55 | 
            -
            ```
         | 
| 56 | 
            -
             | 
| 57 | 
            -
            Then run this to update the dependencies (starting at the top level).
         | 
| 58 | 
            -
             | 
| 59 | 
            -
            ```
         | 
| 60 | 
            -
            # Make sure you are in the top directory, then run:
         | 
| 61 | 
            -
            cd client
         | 
| 62 | 
            -
            rm npm-shrinkwrap.json
         | 
| 63 | 
            -
            npm-check-updates -u
         | 
| 64 | 
            -
            npm install
         | 
| 65 | 
            -
            npm prune
         | 
| 66 | 
            -
            npm shrinkwrap
         | 
| 67 | 
            -
            ```
         | 
| 68 | 
            -
             | 
| 69 | 
            -
            Then confirm that the hot reload server and the rails server both work fine. You
         | 
| 70 | 
            -
            may have to delete `node_modules` and `npm-shrinkwrap.json` and then run `npm
         | 
| 71 | 
            -
            shrinkwrap`.
         | 
| 72 | 
            -
             | 
| 73 | 
            -
            Note: `npm prune` is required before running `npm shrinkwrap` to remove dependencies that are no longer needed after doing updates.
         | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
            Adding Node Modules
         | 
| 77 | 
            -
            =====================================
         | 
| 78 | 
            -
            Suppose you want to add a dependency to "module_name"....
         | 
| 79 | 
            -
             | 
| 80 | 
            -
            Before you do so, consider:
         | 
| 81 | 
            -
             | 
| 82 | 
            -
            1. Do we really need the module and the extra JS code?
         | 
| 83 | 
            -
            2. Is the module well maintained?
         | 
| 84 | 
            -
             | 
| 85 | 
            -
            ```bash
         | 
| 86 | 
            -
            cd client
         | 
| 87 | 
            -
            npm install --save module_name@version
         | 
| 88 | 
            -
            # or
         | 
| 89 | 
            -
            # npm install --save_dev module_name@version
         | 
| 90 | 
            -
            rm npm-shrinkwrap.json
         | 
| 91 | 
            -
            npm shrinkwrap
         | 
| 92 | 
            -
            ```
         | 
| 93 | 
            -
             | 
| 94 | 
            -
            Setting Up a Basic REST API
         | 
| 95 | 
            -
            =====================================
         | 
| 96 | 
            -
            See server.js in our tutorial at
         | 
| 97 | 
            -
            https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/client/server.js
         |