bower-rails 0.10.0 → 0.11.0
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/MIT-LICENSE +0 -0
- data/README.md +66 -46
- data/lib/bower-rails.rb +14 -0
- data/lib/bower-rails/dsl.rb +19 -3
- data/lib/bower-rails/performer.rb +33 -16
- data/lib/bower-rails/railtie.rb +4 -4
- data/lib/bower-rails/version.rb +1 -1
- data/lib/generators/bower_rails/initialize/initialize_generator.rb +5 -3
- data/lib/generators/bower_rails/initialize/templates/Bowerfile +0 -0
- data/lib/generators/bower_rails/initialize/templates/bower.json +0 -0
- data/lib/generators/bower_rails/initialize/templates/bower_rails.rb +4 -1
- data/lib/tasks/bower.rake +3 -2
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 6006f079a66a16246b1b202c5937c34c2a10f604
         | 
| 4 | 
            +
              data.tar.gz: ff977ce0ecd9914b0da8d17035654a3cf68dd82c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9b0caababbe66adb75d1978c4c2dbb38dd351d48da41fb1a441a273ce1ee3ce157addcc0e780cb3990f44f5e5891c2f1f024f666fbc2aff33b42734fde4263b0
         | 
| 7 | 
            +
              data.tar.gz: 32912bcc0c5b3c9650446a7751c137d9b9e02ec179ba1853a9ed5b17a6c2004808a6c13216640d0249ee6c61bd887889da606a4c5ef29b2a570273fdb9d67796
         | 
    
        data/MIT-LICENSE
    CHANGED
    
    | 
            File without changes
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,11 +1,10 @@ | |
| 1 | 
            -
            bower-rails
         | 
| 2 | 
            -
            ===========
         | 
| 1 | 
            +
            # bower-rails
         | 
| 3 2 |  | 
| 4 | 
            -
            [](http://badge.fury.io/rb/bower-rails)
         | 
| 4 | 
            +
            [](https://codeclimate.com/github/rharriso/bower-rails)
         | 
| 5 | 
            +
            [][gemnasium]
         | 
| 7 6 | 
             
            [][travis]
         | 
| 8 | 
            -
            [](https://coveralls.io/github/rharriso/bower-rails?branch=master)
         | 
| 9 8 |  | 
| 10 9 | 
             
            [gem]: https://rubygems.org/gems/bower-rails
         | 
| 11 10 | 
             
            [travis]: https://travis-ci.org/rharriso/bower-rails
         | 
| @@ -29,17 +28,17 @@ NOTE: If you install `node` via package manager with `sudo apt-get install nodej | |
| 29 28 |  | 
| 30 29 | 
             
            in Gemfile
         | 
| 31 30 |  | 
| 32 | 
            -
            ``` | 
| 31 | 
            +
            ```ruby
         | 
| 33 32 | 
             
              gem "bower-rails", "~> 0.10.0"
         | 
| 34 33 | 
             
            ```
         | 
| 35 34 |  | 
| 36 | 
            -
            ##JSON configuration
         | 
| 35 | 
            +
            ## JSON configuration
         | 
| 37 36 |  | 
| 38 | 
            -
            Bower-rails now supports the standard [bower package]( | 
| 37 | 
            +
            Bower-rails now supports the standard [bower package](http://bower.io/docs/creating-packages/#specification) format out-of-the-box. Simply place your bower.json file the Rails root directory to start. Using the standard format will default all bower components to be installed under the `vendor` directory.
         | 
| 39 38 |  | 
| 40 39 | 
             
            To install dependencies into both `lib` and `vendor` directories, run the initializer to generate a custom bower.json:
         | 
| 41 40 |  | 
| 42 | 
            -
            ``` | 
| 41 | 
            +
            ```bash
         | 
| 43 42 | 
             
              rails g bower_rails:initialize json
         | 
| 44 43 | 
             
            ```
         | 
| 45 44 |  | 
| @@ -47,31 +46,40 @@ This will generate a `config/initializers/bower_rails.rb` config file and a spec | |
| 47 46 |  | 
| 48 47 | 
             
            **example bower.json file**
         | 
| 49 48 |  | 
| 50 | 
            -
            ``` | 
| 49 | 
            +
            ```json
         | 
| 51 50 | 
             
            {
         | 
| 52 51 | 
             
               "lib": {
         | 
| 53 52 | 
             
                "name": "bower-rails generated lib assets",
         | 
| 54 53 | 
             
                "dependencies": {
         | 
| 55 | 
            -
                  "threex" | 
| 56 | 
            -
                  "gsvpano.js" | 
| 54 | 
            +
                  "threex": "git@github.com:rharriso/threex.git",
         | 
| 55 | 
            +
                  "gsvpano.js": "https://github.com/rharriso/GSVPano.js/blob/master/src/GSVPano.js"
         | 
| 57 56 | 
             
                }
         | 
| 58 57 | 
             
              },
         | 
| 59 58 | 
             
              "vendor": {
         | 
| 60 59 | 
             
                "name": "bower-rails generated vendor assets",
         | 
| 61 60 | 
             
                "dependencies": {
         | 
| 62 | 
            -
                  "three.js" | 
| 61 | 
            +
                  "three.js": "https://raw.github.com/mrdoob/three.js/master/build/three.js"
         | 
| 63 62 | 
             
                }
         | 
| 64 63 | 
             
              }
         | 
| 65 64 | 
             
            }
         | 
| 66 65 | 
             
            ```
         | 
| 67 66 |  | 
| 68 | 
            -
            ## | 
| 67 | 
            +
            ## Include in Asset Pipeline
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            ```javascript
         | 
| 70 | 
            +
            // Bower packages
         | 
| 71 | 
            +
            //= require d3/d3
         | 
| 72 | 
            +
            //= require underscore/underscore
         | 
| 73 | 
            +
            //
         | 
| 74 | 
            +
            ```
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            ## Ruby DSL configuration
         | 
| 69 77 |  | 
| 70 78 | 
             
            The Ruby DSL configuration is a Bowerfile at the project's root with DSL syntax similar to Bundler.
         | 
| 71 79 |  | 
| 72 80 | 
             
            Run the initializer to generate a sample Bowerfile inside the Rails root and a `config/initializers/bower_rails.rb` config file:
         | 
| 73 81 |  | 
| 74 | 
            -
            ``` | 
| 82 | 
            +
            ```bash
         | 
| 75 83 | 
             
              rails g bower_rails:initialize
         | 
| 76 84 | 
             
            ```
         | 
| 77 85 |  | 
| @@ -79,7 +87,7 @@ Run the initializer to generate a sample Bowerfile inside the Rails root and a ` | |
| 79 87 |  | 
| 80 88 | 
             
            By default assets are put to `./vendor/assets/bower_components` directory:
         | 
| 81 89 |  | 
| 82 | 
            -
            ``` | 
| 90 | 
            +
            ```ruby
         | 
| 83 91 |  | 
| 84 92 | 
             
            # Puts to ./vendor/assets/bower_components
         | 
| 85 93 | 
             
            asset "backbone"
         | 
| @@ -101,7 +109,7 @@ asset "three.js", "https://raw.github.com/mrdoob/three.js/master/build/three.js" | |
| 101 109 |  | 
| 102 110 | 
             
            But the default value can be overridden by `assets_path` method:
         | 
| 103 111 |  | 
| 104 | 
            -
            ``` | 
| 112 | 
            +
            ```ruby
         | 
| 105 113 | 
             
            assets_path "assets/my_javascripts"
         | 
| 106 114 |  | 
| 107 115 | 
             
            # Puts to ./vendor/assets/my_javascripts/bower_components
         | 
| @@ -111,7 +119,7 @@ asset "moment" | |
| 111 119 |  | 
| 112 120 | 
             
            The `assets_path` method can be overridden by an option in a `group` call:
         | 
| 113 121 |  | 
| 114 | 
            -
            ``` | 
| 122 | 
            +
            ```ruby
         | 
| 115 123 | 
             
            assets_path "assets/javascript"
         | 
| 116 124 |  | 
| 117 125 | 
             
            # Puts files under ./vendor/assets/js/bower_components
         | 
| @@ -129,10 +137,10 @@ end | |
| 129 137 | 
             
            NOTE: Available groups are `:lib` and `:vendor`. Others are not allowed according to the Rails convention.
         | 
| 130 138 | 
             
            NOTE: All the assets should be stored in `/assets` subdirectory so putting it under `./vendor/js` directory is unavailable
         | 
| 131 139 |  | 
| 132 | 
            -
            You can extend `main` directive to include some missing files using `main_files` | 
| 140 | 
            +
            You can extend `main` directive to include some missing files using `main_files`
         | 
| 133 141 | 
             
            option as parameter or in a block:
         | 
| 134 142 |  | 
| 135 | 
            -
            ``` | 
| 143 | 
            +
            ```ruby
         | 
| 136 144 | 
             
            # via argument
         | 
| 137 145 | 
             
            asset "moment", "2.10.1", main_files: ["./locale/en-gb.js"]
         | 
| 138 146 |  | 
| @@ -148,7 +156,7 @@ end | |
| 148 156 |  | 
| 149 157 | 
             
            And finally, you can specify the assets to be in the devDependencies block:
         | 
| 150 158 |  | 
| 151 | 
            -
            ``` | 
| 159 | 
            +
            ```ruby
         | 
| 152 160 | 
             
            asset "backbone", "1.1.1"
         | 
| 153 161 |  | 
| 154 162 | 
             
            # Adds jasmine-sinon and jasmine-matchers to devDependencies
         | 
| @@ -164,11 +172,11 @@ end | |
| 164 172 | 
             
            ```
         | 
| 165 173 | 
             
            results in the following bower.json file:
         | 
| 166 174 |  | 
| 167 | 
            -
            ```
         | 
| 175 | 
            +
            ```json
         | 
| 168 176 | 
             
            {
         | 
| 169 | 
            -
              "name": "dsl-generated | 
| 177 | 
            +
              "name": "dsl-generated-dependencies",
         | 
| 170 178 | 
             
              "dependencies": {
         | 
| 171 | 
            -
                "backbone": "1.1.1"
         | 
| 179 | 
            +
                "backbone": "1.1.1",
         | 
| 172 180 | 
             
                "angular": "1.2.18",
         | 
| 173 181 | 
             
              },
         | 
| 174 182 | 
             
              "devDependencies": {
         | 
| @@ -189,11 +197,11 @@ resolution "angular", "1.2.22" | |
| 189 197 |  | 
| 190 198 | 
             
            That will produce `bower.json` like:
         | 
| 191 199 |  | 
| 192 | 
            -
            ``` | 
| 200 | 
            +
            ```json
         | 
| 193 201 | 
             
            {
         | 
| 194 | 
            -
              "name" : "dsl-generated | 
| 195 | 
            -
              "dependencies" | 
| 196 | 
            -
                "angular" | 
| 202 | 
            +
              "name" : "dsl-generated-dependencies",
         | 
| 203 | 
            +
              "dependencies": {
         | 
| 204 | 
            +
                "angular": "1.2.22"
         | 
| 197 205 | 
             
              },
         | 
| 198 206 | 
             
              "resolutions": {
         | 
| 199 207 | 
             
                "angular": "1.2.22"
         | 
| @@ -207,7 +215,7 @@ That will produce `bower.json` like: | |
| 207 215 |  | 
| 208 216 | 
             
            Change options in your `config/initializers/bower_rails.rb`:
         | 
| 209 217 |  | 
| 210 | 
            -
            ``` | 
| 218 | 
            +
            ```ruby
         | 
| 211 219 | 
             
            BowerRails.configure do |bower_rails|
         | 
| 212 220 | 
             
              # Tell bower-rails what path should be considered as root. Defaults to Dir.pwd
         | 
| 213 221 | 
             
              bower_rails.root_path = Dir.pwd
         | 
| @@ -221,11 +229,21 @@ BowerRails.configure do |bower_rails| | |
| 221 229 | 
             
              # Invokes rake bower:clean before precompilation. Defaults to false
         | 
| 222 230 | 
             
              bower_rails.clean_before_precompile = true
         | 
| 223 231 |  | 
| 224 | 
            -
              #  | 
| 232 | 
            +
              # Excludes specific bower components from clean. Defaults to nil
         | 
| 233 | 
            +
              bower_rails.exclude_from_clean = ['moment']
         | 
| 234 | 
            +
             | 
| 235 | 
            +
              # Invokes rake bower:install:deployment instead of rake bower:install. Defaults to false
         | 
| 225 236 | 
             
              bower_rails.use_bower_install_deployment = true
         | 
| 226 237 |  | 
| 238 | 
            +
              # rake bower:install will search for gem dependencies and in each gem it will search for Bowerfile
         | 
| 239 | 
            +
              # and then concatenate all Bowerfile for evaluation
         | 
| 240 | 
            +
              bower_rails.use_gem_deps_for_bowerfile = true
         | 
| 241 | 
            +
             | 
| 227 242 | 
             
              # Passes the -F option to rake bower:install or rake bower:install:deployment. Defaults to false.
         | 
| 228 243 | 
             
              bower_rails.force_install = true
         | 
| 244 | 
            +
             | 
| 245 | 
            +
              # Change the default directory name
         | 
| 246 | 
            +
              bower_rails.bower_components_directory = 'bower_components'
         | 
| 229 247 | 
             
            end
         | 
| 230 248 | 
             
            ```
         | 
| 231 249 |  | 
| @@ -242,7 +260,7 @@ end | |
| 242 260 |  | 
| 243 261 | 
             
            By default this line is added while running the generator.
         | 
| 244 262 |  | 
| 245 | 
            -
            ##Rake tasks
         | 
| 263 | 
            +
            ## Rake tasks
         | 
| 246 264 |  | 
| 247 265 | 
             
            Once you are done with `bower.json` or `Bowerfile` you can run
         | 
| 248 266 |  | 
| @@ -253,7 +271,7 @@ Once you are done with `bower.json` or `Bowerfile` you can run | |
| 253 271 | 
             
            * `rake bower:list` to list all packages
         | 
| 254 272 | 
             
            * `rake bower:clean` to remove all files not listed as [main files](#bower-main-files) (if specified)
         | 
| 255 273 | 
             
            * `rake bower:resolve` to resolve [relative asset paths](#relative-asset-paths) in components
         | 
| 256 | 
            -
            * `rake bower:cache:clean` to clear the bower cache. This is useful when you know a component has been updated. | 
| 274 | 
            +
            * `rake bower:cache:clean` to clear the bower cache. This is useful when you know a component has been updated.
         | 
| 257 275 |  | 
| 258 276 | 
             
            If you'd like to pass any bower CLI options to a rake task, like `-f`, `-j`, you can simply do:
         | 
| 259 277 |  | 
| @@ -261,17 +279,19 @@ If you'd like to pass any bower CLI options to a rake task, like `-f`, `-j`, you | |
| 261 279 | 
             
            rake bower:install['-f']
         | 
| 262 280 | 
             
            ```
         | 
| 263 281 |  | 
| 264 | 
            -
            ##Capistrano 3 Configuration
         | 
| 282 | 
            +
            ## Capistrano 3 Configuration
         | 
| 265 283 |  | 
| 266 284 | 
             
            While using Capistrano 3 and Capistrano Rails gem, it's needed to run bower install before assets compile. Add the following code to your deploy.rb, it will run `rake bower:install` before compiling the assets. CI=true flag is used not to ask for the analytics at the first bower install.
         | 
| 267 285 |  | 
| 268 | 
            -
            ```
         | 
| 286 | 
            +
            ```ruby
         | 
| 269 287 | 
             
            namespace :bower do
         | 
| 270 288 | 
             
              desc 'Install bower'
         | 
| 271 289 | 
             
              task :install do
         | 
| 272 290 | 
             
                on roles(:web) do
         | 
| 273 291 | 
             
                  within release_path do
         | 
| 274 | 
            -
                     | 
| 292 | 
            +
                    with rails_env: fetch(:rails_env) do
         | 
| 293 | 
            +
                      execute :rake, 'bower:install CI=true'
         | 
| 294 | 
            +
                    end
         | 
| 275 295 | 
             
                  end
         | 
| 276 296 | 
             
                end
         | 
| 277 297 | 
             
              end
         | 
| @@ -279,29 +299,29 @@ end | |
| 279 299 | 
             
            before 'deploy:compile_assets', 'bower:install'
         | 
| 280 300 | 
             
            ```
         | 
| 281 301 |  | 
| 282 | 
            -
            ##Bower Configuration
         | 
| 302 | 
            +
            ## Bower Configuration
         | 
| 283 303 |  | 
| 284 304 | 
             
            If you provide a `.bowerrc` in the rails project root, bower-rails will use it for bower configuration.
         | 
| 285 305 | 
             
            Some .bowerrc options are not supported: `directory`, `cwd`, and `interactive`. Bower-rails
         | 
| 286 306 | 
             
            will ignore the `directory` property and instead will use the automatically generated asset path.
         | 
| 287 307 |  | 
| 288 | 
            -
            ###Bower Installation
         | 
| 308 | 
            +
            ### Bower Installation
         | 
| 289 309 |  | 
| 290 310 | 
             
            [Bower](https://github.com/bower/bower) should be installed using npm. Bower can be installed globally (with `$ npm install -g bower`) or in `node_modules` in the root directory of your project.
         | 
| 291 311 |  | 
| 292 | 
            -
            ##Relative asset paths
         | 
| 312 | 
            +
            ## Relative asset paths
         | 
| 293 313 |  | 
| 294 314 | 
             
            Some bower components (eg. [Bootstrap](https://github.com/twbs/bootstrap/blob/0016c17f9307bc71fc96d8d4680a9c861f137cae/dist/css/bootstrap.css#L2263)) have relative urls in the CSS files for imports, images, etc. Rails prefers using [helper methods](http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets) for linking to assets within CSS. Relative paths can cause issues when assets are precompiled for production.
         | 
| 295 315 |  | 
| 296 316 | 
             
            Remember that you should have [bower installed](#bower-installation) either locally in your project or on a remote server.
         | 
| 297 317 |  | 
| 298 | 
            -
            ##Bower Main Files
         | 
| 318 | 
            +
            ## Bower Main Files
         | 
| 299 319 |  | 
| 300 | 
            -
            Each bower component should follow the [bower.json spec](https://github.com/bower/bower.json-spec) | 
| 301 | 
            -
            which designates a recommended `main` directive that lists the primary files of | 
| 302 | 
            -
            that component. You may choose to reference these files if you are using the asset | 
| 303 | 
            -
            pipeline, in which case other extraneous includes of the bower component are not needed. | 
| 304 | 
            -
            The `rake bower:clean` task removes every file that isn't listed in the `main` directive, | 
| 320 | 
            +
            Each bower component should follow the [bower.json spec](https://github.com/bower/bower.json-spec)
         | 
| 321 | 
            +
            which designates a recommended `main` directive that lists the primary files of
         | 
| 322 | 
            +
            that component. You may choose to reference these files if you are using the asset
         | 
| 323 | 
            +
            pipeline, in which case other extraneous includes of the bower component are not needed.
         | 
| 324 | 
            +
            The `rake bower:clean` task removes every file that isn't listed in the `main` directive,
         | 
| 305 325 | 
             
            if the component specifies a `main` directive. Remember that you can extend the `main` directive
         | 
| 306 | 
            -
            in [ruby DSL configuration](#ruby-dsl-configuration). Otherwise, the library will remain as bower installed it. It supports wildcards | 
| 326 | 
            +
            in [ruby DSL configuration](#ruby-dsl-configuration). Otherwise, the library will remain as bower installed it. It supports wildcards
         | 
| 307 327 | 
             
            in files listed in `main` directive.
         | 
    
        data/lib/bower-rails.rb
    CHANGED
    
    | @@ -22,14 +22,26 @@ module BowerRails | |
| 22 22 | 
             
                # are invoked before assets precompilation
         | 
| 23 23 | 
             
                attr_accessor :clean_before_precompile
         | 
| 24 24 |  | 
| 25 | 
            +
                # If containing a list of bower component names, those components
         | 
| 26 | 
            +
                # will be excluded from the bower:clean
         | 
| 27 | 
            +
                attr_accessor :exclude_from_clean
         | 
| 28 | 
            +
             | 
| 25 29 | 
             
                # If set to true then rake bower:install:deployment will be invoked
         | 
| 26 30 | 
             
                # instead of rake bower:install before assets precompilation
         | 
| 27 31 | 
             
                attr_accessor :use_bower_install_deployment
         | 
| 28 32 |  | 
| 33 | 
            +
                # If set to true then rake bower:install will search for gem dependencies
         | 
| 34 | 
            +
                # and in each gem it will search for Bowerfile and then concatenate all Bowerfile
         | 
| 35 | 
            +
                # for evaluation
         | 
| 36 | 
            +
                attr_accessor :use_gem_deps_for_bowerfile
         | 
| 37 | 
            +
             | 
| 29 38 | 
             
                # If set to true then rake bower:install[-f] will be invoked
         | 
| 30 39 | 
             
                # instead of rake bower:install before assets precompilation
         | 
| 31 40 | 
             
                attr_accessor :force_install
         | 
| 32 41 |  | 
| 42 | 
            +
                # Where to store the bower components
         | 
| 43 | 
            +
                attr_accessor :bower_components_directory
         | 
| 44 | 
            +
             | 
| 33 45 | 
             
                def configure &block
         | 
| 34 46 | 
             
                  yield self if block_given?
         | 
| 35 47 | 
             
                  collect_tasks
         | 
| @@ -58,5 +70,7 @@ module BowerRails | |
| 58 70 | 
             
              @resolve_before_precompile    = false
         | 
| 59 71 | 
             
              @clean_before_precompile      = false
         | 
| 60 72 | 
             
              @use_bower_install_deployment = false
         | 
| 73 | 
            +
              @use_gem_deps_for_bowerfile   = false
         | 
| 61 74 | 
             
              @force_install = false
         | 
| 75 | 
            +
              @bower_components_directory = "bower_components"
         | 
| 62 76 | 
             
            end
         | 
    
        data/lib/bower-rails/dsl.rb
    CHANGED
    
    | @@ -7,7 +7,13 @@ module BowerRails | |
| 7 7 | 
             
                DEFAULT_DEPENDENCY_GROUP = :dependencies
         | 
| 8 8 |  | 
| 9 9 | 
             
                def self.evalute(root_path, filename)
         | 
| 10 | 
            -
                  new(root_path).tap  | 
| 10 | 
            +
                  new(root_path).tap do |dsl|
         | 
| 11 | 
            +
                    dsl.send(eval_file_method, File.join(root_path, filename))
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def self.eval_file_method
         | 
| 16 | 
            +
                  BowerRails.use_gem_deps_for_bowerfile ? :eval_file_with_deps : :eval_file
         | 
| 11 17 | 
             
                end
         | 
| 12 18 |  | 
| 13 19 | 
             
                attr_reader :dependencies, :root_path
         | 
| @@ -20,6 +26,7 @@ module BowerRails | |
| 20 26 | 
             
                  @resolutions = {}
         | 
| 21 27 | 
             
                  @assets_path ||= "assets"
         | 
| 22 28 | 
             
                  @main_files = {}
         | 
| 29 | 
            +
                  @current_group = nil
         | 
| 23 30 | 
             
                end
         | 
| 24 31 |  | 
| 25 32 | 
             
                def asset(name, *args, &block)
         | 
| @@ -67,7 +74,15 @@ module BowerRails | |
| 67 74 | 
             
                end
         | 
| 68 75 |  | 
| 69 76 | 
             
                def eval_file(file)
         | 
| 70 | 
            -
                  instance_eval(File.open(file,  | 
| 77 | 
            +
                  instance_eval(File.open(file, 'rb') { |f| f.read }, file.to_s)
         | 
| 78 | 
            +
                end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                def eval_file_with_deps(file)
         | 
| 81 | 
            +
                  Gem::Specification.map do |dep|
         | 
| 82 | 
            +
                    bowerfile_in_dep = File.join(dep.gem_dir, 'Bowerfile')
         | 
| 83 | 
            +
                    eval_file(bowerfile_in_dep) if bowerfile_in_dep != file && File.exist?(bowerfile_in_dep)
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
                  eval_file(file)
         | 
| 71 86 | 
             
                end
         | 
| 72 87 |  | 
| 73 88 | 
             
                def final_assets_path
         | 
| @@ -120,6 +135,7 @@ module BowerRails | |
| 120 135 | 
             
                    normalized_group_path = normalize_location_path(group.first, group_assets_path(group))
         | 
| 121 136 | 
             
                    File.open(File.join(normalized_group_path, ".bowerrc"), "w") do |f|
         | 
| 122 137 | 
             
                      f.write(generate_dotbowerrc)
         | 
| 138 | 
            +
                      f.write("\n")
         | 
| 123 139 | 
             
                    end
         | 
| 124 140 | 
             
                  end
         | 
| 125 141 | 
             
                end
         | 
| @@ -187,7 +203,7 @@ module BowerRails | |
| 187 203 | 
             
                #
         | 
| 188 204 | 
             
                def dependencies_to_json(data)
         | 
| 189 205 | 
             
                  JSON.pretty_generate({
         | 
| 190 | 
            -
                    :name => "dsl-generated | 
| 206 | 
            +
                    :name => "dsl-generated-dependencies"
         | 
| 191 207 | 
             
                  }.merge(data))
         | 
| 192 208 | 
             
                end
         | 
| 193 209 |  | 
| @@ -15,8 +15,6 @@ module BowerRails | |
| 15 15 | 
             
                end
         | 
| 16 16 |  | 
| 17 17 | 
             
                def perform(remove_components = true, &block)
         | 
| 18 | 
            -
                  entries = Dir.entries(root_path)
         | 
| 19 | 
            -
             | 
| 20 18 | 
             
                  npm_path = File.join(root_path, 'node_modules', '.bin')
         | 
| 21 19 | 
             
                  bower = find_command('bower', [npm_path])
         | 
| 22 20 |  | 
| @@ -24,7 +22,7 @@ module BowerRails | |
| 24 22 | 
             
                    $stderr.puts ["Bower not found! You can install Bower using Node and npm:",
         | 
| 25 23 | 
             
                    "$ npm install bower -g",
         | 
| 26 24 | 
             
                    "For more info see http://bower.io/"].join("\n")
         | 
| 27 | 
            -
                     | 
| 25 | 
            +
                    exit 127
         | 
| 28 26 | 
             
                  end
         | 
| 29 27 |  | 
| 30 28 | 
             
                  if entries.include?('Bowerfile')
         | 
| @@ -69,9 +67,9 @@ module BowerRails | |
| 69 67 |  | 
| 70 68 | 
             
                  # Load and merge root .bowerrc
         | 
| 71 69 | 
             
                  dot_bowerrc = JSON.parse(File.read(File.join(root_path, '.bowerrc'))) rescue {}
         | 
| 72 | 
            -
                  dot_bowerrc["directory"] =  | 
| 70 | 
            +
                  dot_bowerrc["directory"] = components_directory
         | 
| 73 71 |  | 
| 74 | 
            -
                  if json. | 
| 72 | 
            +
                  if json.reject{ |key| ['lib', 'vendor'].include? key }.empty?
         | 
| 75 73 | 
             
                    folders = json.keys
         | 
| 76 74 | 
             
                  else
         | 
| 77 75 | 
             
                    raise "Assuming a standard bower package but cannot find the required 'name' key" unless !!json['name']
         | 
| @@ -91,7 +89,7 @@ module BowerRails | |
| 91 89 | 
             
                    Dir.chdir(dir) do
         | 
| 92 90 |  | 
| 93 91 | 
             
                      # Remove old components
         | 
| 94 | 
            -
                      FileUtils.rm_rf(" | 
| 92 | 
            +
                      FileUtils.rm_rf("#{components_directory}/*") if remove_components
         | 
| 95 93 |  | 
| 96 94 | 
             
                      # Create bower.json
         | 
| 97 95 | 
             
                      File.open("bower.json", "w") do |f|
         | 
| @@ -115,25 +113,26 @@ module BowerRails | |
| 115 113 | 
             
                  end
         | 
| 116 114 | 
             
                end
         | 
| 117 115 |  | 
| 118 | 
            -
                def resolve_asset_paths
         | 
| 116 | 
            +
                def resolve_asset_paths(root_directory = components_directory)
         | 
| 119 117 | 
             
                  # Resolve relative paths in CSS
         | 
| 120 | 
            -
                  Dir[ | 
| 118 | 
            +
                  Dir["#{components_directory}/**/*.css"].each do |filename|
         | 
| 121 119 | 
             
                    contents = File.read(filename) if FileTest.file?(filename)
         | 
| 122 120 | 
             
                    # http://www.w3.org/TR/CSS2/syndata.html#uri
         | 
| 123 | 
            -
                    url_regex = /url\((?!\#)\s*['"]?(?![a-z]+:)([^'"\)]*)['"]?\s*\)/
         | 
| 121 | 
            +
                    url_regex = /url\((?!\#)\s*['"]?((?![a-z]+:)([^'"\)]*?)([?#][^'"\)]*)?)['"]?\s*\)/
         | 
| 124 122 |  | 
| 125 123 | 
             
                    # Resolve paths in CSS file if it contains a url
         | 
| 126 124 | 
             
                    if contents =~ url_regex
         | 
| 127 125 | 
             
                      directory_path = Pathname.new(File.dirname(filename))
         | 
| 128 | 
            -
                      .relative_path_from(Pathname.new( | 
| 126 | 
            +
                      .relative_path_from(Pathname.new(root_directory))
         | 
| 129 127 |  | 
| 130 128 | 
             
                      # Replace relative paths in URLs with Rails asset_path helper
         | 
| 131 129 | 
             
                      new_contents = contents.gsub(url_regex) do |match|
         | 
| 132 | 
            -
                        relative_path = $ | 
| 130 | 
            +
                        relative_path = $2
         | 
| 131 | 
            +
                        params = $3
         | 
| 133 132 | 
             
                        image_path = directory_path.join(relative_path).cleanpath
         | 
| 134 | 
            -
                        puts "#{match} => #{image_path}"
         | 
| 133 | 
            +
                        puts "#{match} => #{image_path} #{params}"
         | 
| 135 134 |  | 
| 136 | 
            -
                        "url(<%= asset_path '#{image_path}'  | 
| 135 | 
            +
                        "url(<%= asset_path '#{image_path}' %>#{params})"
         | 
| 137 136 | 
             
                      end
         | 
| 138 137 |  | 
| 139 138 | 
             
                      # Replace CSS with ERB CSS file with resolved asset paths
         | 
| @@ -146,7 +145,10 @@ module BowerRails | |
| 146 145 | 
             
                def remove_extra_files
         | 
| 147 146 | 
             
                  puts "\nAttempting to remove all but main files as specified by bower\n"
         | 
| 148 147 |  | 
| 149 | 
            -
                  Dir[ | 
| 148 | 
            +
                  Dir["#{components_directory}/*"].each do |component_dir|
         | 
| 149 | 
            +
                    component_name = component_dir.split('/').last
         | 
| 150 | 
            +
                    next if clean_should_skip_component? component_name
         | 
| 151 | 
            +
             | 
| 150 152 | 
             
                    if File.exists?(File.join(component_dir, 'bower.json'))
         | 
| 151 153 | 
             
                      bower_file = File.read(File.join(component_dir, 'bower.json'))
         | 
| 152 154 | 
             
                    elsif File.exists?(File.join(component_dir, '.bower.json'))
         | 
| @@ -157,7 +159,6 @@ module BowerRails | |
| 157 159 |  | 
| 158 160 | 
             
                    # Parse bower.json
         | 
| 159 161 | 
             
                    bower_json = JSON.parse(bower_file)
         | 
| 160 | 
            -
                    component_name = component_dir.split('/').last
         | 
| 161 162 | 
             
                    main_files = Array(bower_json['main']) + main_files_for_component(component_name)
         | 
| 162 163 | 
             
                    next if main_files.empty?
         | 
| 163 164 |  | 
| @@ -186,7 +187,9 @@ module BowerRails | |
| 186 187 | 
             
                  paths.each do |path|
         | 
| 187 188 | 
             
                    exts.each do |ext|
         | 
| 188 189 | 
             
                      exe = File.join(path, "#{cmd}#{ext}")
         | 
| 189 | 
            -
                       | 
| 190 | 
            +
                      if (File.executable?(exe) && File.file?(exe))
         | 
| 191 | 
            +
                        return Shellwords.escape exe
         | 
| 192 | 
            +
                      end
         | 
| 190 193 | 
             
                    end
         | 
| 191 194 | 
             
                  end
         | 
| 192 195 | 
             
                  nil
         | 
| @@ -195,7 +198,21 @@ module BowerRails | |
| 195 198 | 
             
                private
         | 
| 196 199 |  | 
| 197 200 | 
             
                def main_files_for_component(name)
         | 
| 201 | 
            +
                  return [] unless entries.include?('Bowerfile')
         | 
| 198 202 | 
             
                  Array(dsl.main_files[name])
         | 
| 199 203 | 
             
                end
         | 
| 204 | 
            +
             | 
| 205 | 
            +
                def entries
         | 
| 206 | 
            +
                  @entries ||= Dir.entries(root_path)
         | 
| 207 | 
            +
                end
         | 
| 208 | 
            +
             | 
| 209 | 
            +
                def clean_should_skip_component?(name)
         | 
| 210 | 
            +
                  BowerRails.exclude_from_clean.respond_to?(:include?) &&
         | 
| 211 | 
            +
                    BowerRails.exclude_from_clean.include?(name)
         | 
| 212 | 
            +
                end
         | 
| 213 | 
            +
             | 
| 214 | 
            +
                def components_directory
         | 
| 215 | 
            +
                  BowerRails.bower_components_directory
         | 
| 216 | 
            +
                end
         | 
| 200 217 | 
             
              end
         | 
| 201 218 | 
             
            end
         | 
    
        data/lib/bower-rails/railtie.rb
    CHANGED
    
    | @@ -1,6 +1,4 @@ | |
| 1 | 
            -
            require 'bower-rails'
         | 
| 2 1 | 
             
            require 'bower-rails/dsl'
         | 
| 3 | 
            -
            require 'rails'
         | 
| 4 2 |  | 
| 5 3 | 
             
            module BowerRails
         | 
| 6 4 | 
             
              class Railtie < Rails::Railtie
         | 
| @@ -11,13 +9,15 @@ module BowerRails | |
| 11 9 | 
             
                  config.before_initialize do |app|
         | 
| 12 10 | 
             
                    @dsl = BowerRails::Dsl.evalute(BowerRails.root_path, @@bowerfile)
         | 
| 13 11 | 
             
                    @dsl.final_assets_path.map do |assets_root, assets_path|
         | 
| 14 | 
            -
                      app.config.assets.paths << | 
| 12 | 
            +
                      app.config.assets.paths <<
         | 
| 13 | 
            +
                        Rails.root.join(assets_root, assets_path, BowerRails.bower_components_directory)
         | 
| 15 14 | 
             
                    end
         | 
| 16 15 | 
             
                  end
         | 
| 17 16 | 
             
                else
         | 
| 18 17 | 
             
                  config.before_initialize do |app|
         | 
| 19 18 | 
             
                    ["lib", "vendor"].each do |dir|
         | 
| 20 | 
            -
                      app.config.assets.paths << | 
| 19 | 
            +
                      app.config.assets.paths <<
         | 
| 20 | 
            +
                        Rails.root.join(dir, 'assets', BowerRails.bower_components_directory)
         | 
| 21 21 | 
             
                    end
         | 
| 22 22 | 
             
                  end
         | 
| 23 23 | 
             
                end
         | 
    
        data/lib/bower-rails/version.rb
    CHANGED
    
    
| @@ -1,6 +1,8 @@ | |
| 1 1 | 
             
            module BowerRails
         | 
| 2 2 | 
             
              module Generators
         | 
| 3 3 | 
             
                class InitializeGenerator < Rails::Generators::Base
         | 
| 4 | 
            +
                  INITIALIZE_FILE_PATH = 'config/initializers/bower_rails.rb'
         | 
| 5 | 
            +
             | 
| 4 6 | 
             
                  desc 'Adds a boilerplate bower.json or Bowerfile to the root of Rails project and an empty initializer'
         | 
| 5 7 | 
             
                  source_root File.expand_path('../templates', __FILE__)
         | 
| 6 8 | 
             
                  argument :config_file, :type => :string, :default => 'bowerfile'
         | 
| @@ -16,14 +18,14 @@ module BowerRails | |
| 16 18 | 
             
                  end
         | 
| 17 19 |  | 
| 18 20 | 
             
                  def copy_initializer_file
         | 
| 19 | 
            -
                    copy_file 'bower_rails.rb',  | 
| 21 | 
            +
                    copy_file 'bower_rails.rb', INITIALIZE_FILE_PATH
         | 
| 20 22 | 
             
                  end
         | 
| 21 23 |  | 
| 22 24 | 
             
                  def require_initializer_in_application_rb
         | 
| 23 25 | 
             
                    if Rails.version < "4.0.0"
         | 
| 24 | 
            -
                      environment { "require \"#{ | 
| 26 | 
            +
                      environment { "require Rails.root.join(\"#{INITIALIZE_FILE_PATH}\").to_s" }
         | 
| 25 27 | 
             
                    end
         | 
| 26 28 | 
             
                  end
         | 
| 27 29 | 
             
                end
         | 
| 28 30 | 
             
              end
         | 
| 29 | 
            -
            end
         | 
| 31 | 
            +
            end
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| @@ -11,9 +11,12 @@ BowerRails.configure do |bower_rails| | |
| 11 11 | 
             
              # Invokes rake bower:clean before precompilation. Defaults to false
         | 
| 12 12 | 
             
              # bower_rails.clean_before_precompile = true
         | 
| 13 13 |  | 
| 14 | 
            -
              # Invokes rake bower:install:deployment instead rake bower:install. Defaults to false
         | 
| 14 | 
            +
              # Invokes rake bower:install:deployment instead of rake bower:install. Defaults to false
         | 
| 15 15 | 
             
              # bower_rails.use_bower_install_deployment = true
         | 
| 16 16 | 
             
              #
         | 
| 17 17 | 
             
              # Invokes rake bower:install and rake bower:install:deployment with -F (force) flag. Defaults to false
         | 
| 18 18 | 
             
              # bower_rails.force_install = true
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              # Change the default directory name
         | 
| 21 | 
            +
              # bower_rails.bower_components_directory = 'bower_components'
         | 
| 19 22 | 
             
            end
         | 
    
        data/lib/tasks/bower.rake
    CHANGED
    
    | @@ -62,9 +62,10 @@ namespace :bower do | |
| 62 62 | 
             
              end
         | 
| 63 63 |  | 
| 64 64 | 
             
              desc "Resolve assets paths in bower components"
         | 
| 65 | 
            -
              task :resolve do
         | 
| 65 | 
            +
              task :resolve, :relative_directory do |_, args|
         | 
| 66 66 | 
             
                BowerRails::Performer.perform false do
         | 
| 67 | 
            -
                  resolve_asset_paths
         | 
| 67 | 
            +
                  resolve_asset_paths(
         | 
| 68 | 
            +
                    args[:relative_directory] || BowerRails.bower_components_directory)
         | 
| 68 69 | 
             
                end
         | 
| 69 70 | 
             
              end
         | 
| 70 71 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: bower-rails
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.11.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ross Harrison
         | 
| @@ -90,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 90 90 | 
             
                  version: '0'
         | 
| 91 91 | 
             
            requirements: []
         | 
| 92 92 | 
             
            rubyforge_project: 
         | 
| 93 | 
            -
            rubygems_version: 2.4. | 
| 93 | 
            +
            rubygems_version: 2.4.8
         | 
| 94 94 | 
             
            signing_key: 
         | 
| 95 95 | 
             
            specification_version: 4
         | 
| 96 96 | 
             
            summary: Bower for Rails
         |