jslint_on_rails 1.0.7 → 1.1

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.
@@ -1,3 +1,9 @@
1
+ Version 1.1 (09.04.2012)
2
+
3
+ * removed support for installing as a Rails plugin
4
+ * doesn't auto-generate jslint.yml if it doesn't exist (create one explicitly using the rake task if you want)
5
+ * no need to set JSLint.config_path (if you aren't using the Railtie) if the file is in the default location
6
+
1
7
  Version 1.0.7 (12.09.2011)
2
8
 
3
9
  * fixed problem with local options from one file being applied to all subsequent files
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gem 'rspec'
4
- gem 'fakefs'
4
+ gem 'fakefs', '0.3.2'
5
5
  gem 'rake'
@@ -1,22 +1,22 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- diff-lcs (1.1.2)
5
- fakefs (0.2.1)
6
- rake (0.8.7)
7
- rspec (2.1.0)
8
- rspec-core (~> 2.1.0)
9
- rspec-expectations (~> 2.1.0)
10
- rspec-mocks (~> 2.1.0)
11
- rspec-core (2.1.0)
12
- rspec-expectations (2.1.0)
4
+ diff-lcs (1.1.3)
5
+ fakefs (0.3.2)
6
+ rake (0.9.2)
7
+ rspec (2.6.0)
8
+ rspec-core (~> 2.6.0)
9
+ rspec-expectations (~> 2.6.0)
10
+ rspec-mocks (~> 2.6.0)
11
+ rspec-core (2.6.4)
12
+ rspec-expectations (2.6.0)
13
13
  diff-lcs (~> 1.1.2)
14
- rspec-mocks (2.1.0)
14
+ rspec-mocks (2.6.0)
15
15
 
16
16
  PLATFORMS
17
17
  ruby
18
18
 
19
19
  DEPENDENCIES
20
- fakefs
20
+ fakefs (= 0.3.2)
21
21
  rake
22
22
  rspec
@@ -1,34 +1,27 @@
1
1
  # JSLint on Rails
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/psionides/jslint_on_rails.png)](http://travis-ci.org/psionides/jslint_on_rails)
4
+
3
5
  **JSLint on Rails** is a Ruby library which lets you run
4
- the [JSLint JavaScript code checker](https://github.com/douglascrockford/JSLint) on your Javascript code easily. It can
5
- be installed either as a gem (the recommended method), or as a Rails plugin (legacy method).
6
+ the [JSLint JavaScript code checker](https://github.com/douglascrockford/JSLint) on your Javascript code easily.
6
7
 
7
- Note: to run JSLint on Rails, you need to have **Java** available on your machine - it's required because JSLint is
8
+ Note: to run JSLint on Rails you need to have **Java** available on your machine - it's required because JSLint is
8
9
  itself written in JavaScript, and is run using the [Rhino](http://www.mozilla.org/rhino) JavaScript engine (written in
9
10
  Java). Any decent version of Java will do (and by decent I mean 5.0 or later).
10
11
 
11
12
 
12
13
  ## Compatibility
13
14
 
14
- Latest version should be compatible with Ruby 1.9 and Rails 3 (and also with Ruby 1.8 and Rails 2, of course).
15
-
15
+ Latest version should be compatible with Ruby 1.8.7 and 1.9.2+ (check [Travis build status](http://travis-ci.org/#!/psionides/jslint_on_rails)), and also with Rails 2.x and 3.x.
16
16
 
17
- ## Installation (as gem)
18
17
 
19
- The recommended installation method (for Rails and for other frameworks) is to install JSLint on Rails as a gem. The
20
- advantage is that it's easier to update the library to newer versions later, and you keep its code separate from your
21
- own code.
18
+ ## Installation
22
19
 
23
- To use JSLint as a gem in Rails 3, you just need to do one thing:
20
+ To use JSLint in Rails 3 you just need to do one thing:
24
21
 
25
22
  * add `gem 'jslint_on_rails'` to bundler's Gemfile
26
23
 
27
- And that's it. On first run, JSLint on Rails will create an example config file for you in config/jslint.yml, which
28
- you can then tweak to suit your app.
29
-
30
- In Rails 2 and in other frameworks JSLint on Rails can't be loaded automatically using a Railtie, so you have to do a
31
- bit more work. The procedure in this case is:
24
+ In Rails 2 and other frameworks JSLint on Rails can't be loaded automatically using a Railtie, so you have to load it explicitly. The procedure in this case is:
32
25
 
33
26
  * install the gem in your application using whatever technique is recommended for your framework (e.g. using bundler,
34
27
  or by installing the gem manually with `gem install jslint_on_rails` and loading it with `require 'jslint'`)
@@ -36,51 +29,23 @@ or by installing the gem manually with `gem install jslint_on_rails` and loading
36
29
 
37
30
  require 'jslint/tasks'
38
31
 
39
- * below that line, set JSLint's config_path variable to point it to a place where you want your JSLint configuration
40
- file to be kept - for example:
41
-
42
- JSLint.config_path = "config/jslint.yml"
43
-
44
- * run a rake task which will generate a sample config file for you:
45
-
46
- rake jslint:copy_config
47
-
48
-
49
- ## Installation (as Rails plugin)
50
-
51
- Installing libraries as Rails plugins was popular before Rails 3, but now gems with Railties can do everything that
52
- plugins could do, so plugins are getting less and less popular. But if you want to install JSLint on Rails as a plugin
53
- anyway, here's how you do it:
54
-
55
- ./script/plugin install git://github.com/psionides/jslint_on_rails.git
56
-
57
- This will also create a sample `jslint.yml` config file for you in your config directory.
58
-
32
+ ## Configuration
59
33
 
60
- ## Installation (custom)
34
+ It's strongly recommended that you create your own copy of the JSLint config file provided by the gem and tweak it to suit your preferences. To create a new config file from the template in your config directory, call this rake task:
61
35
 
62
- If you wish to write your own rake task to run JSLint, you can create and execute the JSLint object manually:
36
+ [bundle exec] rake jslint:copy_config
63
37
 
64
- require 'jslint'
65
-
66
- lint = JSLint::Lint.new(
67
- :paths => ['public/javascripts/**/*.js'],
68
- :exclude_paths => ['public/javascripts/vendor/**/*.js'],
69
- :config_path => 'config/jslint.yml'
70
- )
71
-
72
- lint.run
38
+ This will create a config file at `config/jslint.yml` listing all available options. If for some reason you'd like to put the config file at a different location, set the `config_path` variable somewhere in your Rakefile:
73
39
 
40
+ JSLint.config_path = "config/lint.yml"
74
41
 
75
- ## Configuration
76
-
77
- Whatever method you use for installation, a YAML config file should be created for you. In this file, you can:
42
+ There are two things you can change in the config file:
78
43
 
79
44
  * define which Javascript files are checked by default; you'll almost certainly want to change that, because the default
80
45
  is `public/javascripts/**/*.js` which means all Javascript files, and you probably don't want JSLint to check entire
81
46
  jQuery, Prototype or whatever other libraries you use - so change this so that only your scripts are checked (you can
82
47
  put multiple entries under "paths:" and "exclude_paths:")
83
- * tweak JSLint options to enable or disable specific checks - I've set the defaults to what I believe is reasonable,
48
+ * enable or disable specific checks - I've set the defaults to what I believe is reasonable,
84
49
  but what's reasonable for me may not be reasonable for you
85
50
 
86
51
 
@@ -128,10 +93,31 @@ and/or paths to exclude to the rake task:
128
93
 
129
94
  rake jslint paths=public/javascripts/models/*.js,public/javascripts/lib/*.js exclude_paths=public/javascripts/lib/jquery.js
130
95
 
131
- For the best effect, you should include JSLint check in your Continuous Integration build - that way, you'll get
96
+ For the best effect, you should include JSLint check in your Continuous Integration build - that way you'll get
132
97
  immediate notification when you've committed JS code with errors.
133
98
 
134
99
 
100
+ ## Running automatically with Guard
101
+
102
+ If you want to run JSLint on Rails automatically everytime you save a JS file, check out the
103
+ [guard-jslint-on-rails](https://github.com/wireframe/guard-jslint-on-rails) gem by Ryan Sonnek.
104
+
105
+
106
+ ## Running from your code
107
+
108
+ If you would prefer to write your own rake task to run JSLint, you can create and execute the JSLint object manually:
109
+
110
+ require 'jslint'
111
+
112
+ lint = JSLint::Lint.new(
113
+ :paths => ['public/javascripts/**/*.js'],
114
+ :exclude_paths => ['public/javascripts/vendor/**/*.js'],
115
+ :config_path => 'config/jslint.yml'
116
+ )
117
+
118
+ lint.run
119
+
120
+
135
121
  ## Additional options
136
122
 
137
123
  I've added some additional options to JSLint to get rid of some warnings which I thought didn't make sense. They're all
@@ -181,6 +167,15 @@ So I've tweaked the code that creates this warning so that it doesn't print it i
181
167
  * expressions with ?: are accepted if both alternatives (before and after the colon) are statements
182
168
 
183
169
 
170
+ ## Version 2.0 and JSHint
171
+
172
+ Some people have asked about [JSHint](http://jshint.com) support (some have even made forks replacing JSLint with JSHint). I like the idea of a less strict lint giving the user more control; the reason I haven't integrated JSHint yet is because I want the gem to provide both JSLint and JSHint and let you choose which engine you want to use. The thing is, I can't do that easily because their option sets have diverged - a few options have been changed in JSLint since JSHint was forked off from it, and JSHint has changed or added some other options. There was even [a plan](https://github.com/jshint/jshint/issues/166) to completely redesign the option system in JSHint. So I've decided to hold off the integration until I can be sure that the option sets won't be completely changed again. I'm hoping this might happen as a part of the [JSHint Next](https://github.com/jshint/jshint-next) project, but I don't know what the timeline is.
173
+
174
+ I haven't been updating JSLint for the same reason - some options have changed there and I'd rather wait until I can update everything together at the same time. If you're impatient, check out some of the [forks that use JSHint](https://github.com/psionides/jslint_on_rails/network); some of them have even been released as gems (e.g. see [jshint\_on\_rails](https://rubygems.org/gems/jshint_on_rails)) - although as far as I know, none of them have adapted the config file template to match JSHint's option set.
175
+
176
+ Another thing that's planned for 2.0, whenever that happens, is a redesign of the Javascript runner code to make it possible to use other ways of running Javascript - probably using [execjs](https://github.com/sstephenson/execjs).
177
+
178
+
184
179
  ## Credits
185
180
 
186
181
  * JSLint on Rails was created by [Jakub Suder](http://psionides.jogger.pl), licensed under MIT License
@@ -1,21 +1,7 @@
1
1
  module JSLint
2
2
  class Railtie < Rails::Railtie
3
-
4
3
  rake_tasks do
5
- require 'jslint/rails'
6
4
  require 'jslint/tasks'
7
- JSLint::Railtie.create_example_config
8
5
  end
9
-
10
- def self.create_example_config
11
- unless File.exists?(JSLint.config_path)
12
- begin
13
- JSLint::Utils.copy_config_file
14
- rescue StandardError => error
15
- puts "Error: #{error.message}"
16
- end
17
- end
18
- end
19
-
20
6
  end
21
7
  end
@@ -3,13 +3,19 @@ require 'yaml'
3
3
 
4
4
  module JSLint
5
5
 
6
- VERSION = "1.0.7"
6
+ VERSION = "1.1"
7
7
  DEFAULT_CONFIG_FILE = File.expand_path(File.dirname(__FILE__) + "/config/jslint.yml")
8
8
 
9
9
  class << self
10
10
  attr_accessor :config_path
11
11
  end
12
12
 
13
+ self.config_path = if defined?(Rails)
14
+ File.join(Rails.root, 'config', 'jslint.yml')
15
+ else
16
+ 'config/jslint.yml'
17
+ end
18
+
13
19
  module Utils
14
20
  class << self
15
21
 
@@ -59,22 +65,6 @@ module JSLint
59
65
  xputs "done."
60
66
  end
61
67
  end
62
-
63
- def remove_config_file
64
- raise ArgumentError, "Please set JSLint.config_path" if JSLint.config_path.nil?
65
- xprint "Removing config file... "
66
- if File.exists?(JSLint.config_path) && File.file?(JSLint.config_path)
67
- if File.read(JSLint.config_path) == File.read(JSLint::DEFAULT_CONFIG_FILE)
68
- File.delete(JSLint.config_path)
69
- xputs "OK."
70
- else
71
- xputs "File was modified, so it won't be deleted automatically."
72
- end
73
- else
74
- xputs "OK (no config file found)."
75
- end
76
- end
77
-
78
68
  end
79
69
  end
80
70
  end
@@ -1,4 +1,5 @@
1
1
  require 'jslint'
2
+ require 'pp' # fix for fakefs/pp incompatibility in Ruby 1.9.3
2
3
  require 'fakefs'
3
4
 
4
5
  module JSLint::Utils
@@ -108,41 +108,4 @@ describe JSLint::Utils do
108
108
  JSLint::Utils.copy_config_file
109
109
  end
110
110
  end
111
-
112
- describe "remove_config_file" do
113
- it "throw an error if config path isn't set" do
114
- JSLint.config_path = nil
115
- lambda { JSLint::Utils.remove_config_file }.should raise_error(ArgumentError)
116
- end
117
-
118
- it "should remove the file if it's identical to default one" do
119
- JSLint.config_path = "newfile3.yml"
120
- create_file 'newfile3.yml', 'default config file'
121
- File.exists?("newfile3.yml").should be_true
122
- JSLint::Utils.remove_config_file
123
- File.exists?("newfile3.yml").should be_false
124
- end
125
-
126
- it "should not remove the file if it's not identical to default one" do
127
- JSLint.config_path = "newfile4.yml"
128
- create_file 'newfile4.yml', "something's changed"
129
- File.exists?("newfile4.yml").should be_true
130
- JSLint::Utils.remove_config_file
131
- File.exists?("newfile4.yml").should be_true
132
- end
133
-
134
- it "should not remove the file if it doesn't exist" do
135
- JSLint.config_path = "this_doesnt_exist.yml"
136
- lambda { JSLint::Utils.remove_config_file }.should_not raise_error
137
- end
138
-
139
- it "should not remove the file if it's not a file" do
140
- Dir.mkdir("public")
141
- JSLint.config_path = "public"
142
- lambda { JSLint::Utils.remove_config_file }.should_not raise_error
143
- File.exist?("public").should be_true
144
- File.directory?("public").should be_true
145
- end
146
- end
147
-
148
111
  end
metadata CHANGED
@@ -1,33 +1,22 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: jslint_on_rails
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
6
- segments:
7
- - 1
8
- - 0
9
- - 7
10
- version: 1.0.7
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.1'
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Jakub Suder
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-09-12 00:00:00 +02:00
19
- default_executable:
12
+ date: 2012-04-09 00:00:00.000000000Z
20
13
  dependencies: []
21
-
22
14
  description:
23
15
  email: jakub.suder@gmail.com
24
16
  executables: []
25
-
26
17
  extensions: []
27
-
28
18
  extra_rdoc_files: []
29
-
30
- files:
19
+ files:
31
20
  - MIT-LICENSE
32
21
  - README.markdown
33
22
  - Changelog.markdown
@@ -37,7 +26,6 @@ files:
37
26
  - lib/jslint/config/jslint.yml
38
27
  - lib/jslint/errors.rb
39
28
  - lib/jslint/lint.rb
40
- - lib/jslint/rails.rb
41
29
  - lib/jslint/railtie.rb
42
30
  - lib/jslint/tasks.rb
43
31
  - lib/jslint/utils.rb
@@ -48,42 +36,31 @@ files:
48
36
  - lib/jslint_on_rails.rb
49
37
  - spec/jslint_spec.rb
50
38
  - spec/lint_spec.rb
51
- - spec/railtie_spec.rb
52
39
  - spec/spec_helper.rb
53
40
  - spec/utils_spec.rb
54
- has_rdoc: true
55
41
  homepage: http://github.com/psionides/jslint_on_rails
56
42
  licenses: []
57
-
58
43
  post_install_message:
59
44
  rdoc_options: []
60
-
61
- require_paths:
45
+ require_paths:
62
46
  - lib
63
- required_ruby_version: !ruby/object:Gem::Requirement
47
+ required_ruby_version: !ruby/object:Gem::Requirement
64
48
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- hash: 3
69
- segments:
70
- - 0
71
- version: "0"
72
- required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
54
  none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- hash: 3
78
- segments:
79
- - 0
80
- version: "0"
81
- requirements:
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements:
82
60
  - Java JRE (5.0 or later)
83
61
  rubyforge_project:
84
- rubygems_version: 1.3.7
62
+ rubygems_version: 1.8.10
85
63
  signing_key:
86
64
  specification_version: 3
87
65
  summary: JSLint JavaScript checker wrapped in a Ruby gem for easier use
88
66
  test_files: []
89
-
@@ -1,4 +0,0 @@
1
- require 'jslint/utils'
2
-
3
- # for Rails, set config file path to config/jslint.yml in Rails root
4
- JSLint.config_path = File.join(Rails.root, 'config', 'jslint.yml')
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
- require 'jslint/railtie'
3
-
4
- describe JSLint::Railtie do
5
- before :all do
6
- create_config 'example config'
7
- JSLint.config_path = "custom_config.yml"
8
- end
9
-
10
- before :each do
11
- File.delete(JSLint.config_path) if File.exist?(JSLint.config_path)
12
- end
13
-
14
- describe "create_example_config" do
15
- it "should create a config file if it doesn't exist" do
16
- JSLint::Railtie.create_example_config
17
-
18
- File.exist?(JSLint.config_path).should be_true
19
- File.read(JSLint.config_path).should == 'example config'
20
- end
21
-
22
- it "should not do anything if config already exists" do
23
- create_file(JSLint.config_path, "bar")
24
-
25
- JSLint::Railtie.create_example_config
26
-
27
- File.exist?(JSLint.config_path).should be_true
28
- File.read(JSLint.config_path).should == "bar"
29
- end
30
- end
31
- end