rubygems-isitjruby 1.1.2
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.
- data/History.txt +12 -0
- data/Manifest.txt +8 -0
- data/README.rst +74 -0
- data/Rakefile +17 -0
- data/VERSION +1 -0
- data/lib/isit19.rb +125 -0
- data/lib/rubygems/commands/isit19_command.rb +79 -0
- data/lib/rubygems/commands/isitjruby_command.rb +21 -0
- data/lib/rubygems_plugin.rb +52 -0
- data/rubygems-isitjruby.gemspec +48 -0
- metadata +74 -0
data/History.txt
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
* 1.1.2 / 2009-08-24
|
2
|
+
* If there is no comments about our version show up the first comments about the latest version
|
3
|
+
* Manage & develop
|
4
|
+
* Use Jeweler for create the gem
|
5
|
+
* Renamed to rubygems-isitjruby
|
6
|
+
* 1.1.1 / 2009-08-20
|
7
|
+
* Bug that always show up gems as maybe valid
|
8
|
+
* 1.1.0 / 2009-08-20
|
9
|
+
* Forked to work with isitjruby when platform is java
|
10
|
+
* 1.0.0 / 2009-08-19
|
11
|
+
* original rubygems-isit19
|
12
|
+
|
data/Manifest.txt
ADDED
data/README.rst
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
rubygems-isitjruby
|
2
|
+
==================
|
3
|
+
|
4
|
+
* http://isitjruby.com
|
5
|
+
* http://github.com/blaxter/rubygem-isit19/tree/master
|
6
|
+
|
7
|
+
* This gem is a fork of http://seattlerb.rubyforge.org/rubygems-isit19
|
8
|
+
|
9
|
+
DESCRIPTION
|
10
|
+
===========
|
11
|
+
|
12
|
+
Lets you figure out if your gems and gems you install might work on jruby. Uses http://isitjruby.com as its datastore. Be sure to update the website with
|
13
|
+
your experiences!
|
14
|
+
|
15
|
+
|
16
|
+
FEATURES/PROBLEMS
|
17
|
+
=================
|
18
|
+
|
19
|
+
* jruby
|
20
|
+
* gem isitjruby for checking your installed gems (when using jruby)
|
21
|
+
* gem install plugin that tells you if your installed gem works on jruby
|
22
|
+
|
23
|
+
USE
|
24
|
+
===
|
25
|
+
|
26
|
+
$ jgem install daemons
|
27
|
+
|
28
|
+
daemons 1.0.10 probably might not work, blaxter says 1.0 fails
|
29
|
+
Update http://isitjruby.com/daemons with your experiences!
|
30
|
+
|
31
|
+
Successfully installed daemons-1.0.10
|
32
|
+
1 gem installed
|
33
|
+
blaxter@helicon:~/devel/rubygems-isitjruby$ (master) $ jrake
|
34
|
+
blaxter@helicon:~/devel/rubygems-isitjruby$ (master) $ jgem isitjruby daemons
|
35
|
+
daemons 1.0.10: http://isitjruby.com/daemons
|
36
|
+
blaxter says 1.0 fails on GNU/Linux
|
37
|
+
Daemons use fork, jruby doesn't support fork, so it doesn't work and
|
38
|
+
never will
|
39
|
+
|
40
|
+
INSTALL
|
41
|
+
=======
|
42
|
+
|
43
|
+
* From github: `sudo gem install blaxter-rubygem-isitjruby`
|
44
|
+
|
45
|
+
* Or you could also install from gemcutter
|
46
|
+
|
47
|
+
sudo sources add http://gemcutter.com && sudo gem install rubygems-isitjruby
|
48
|
+
|
49
|
+
|
50
|
+
LICENSE
|
51
|
+
=======
|
52
|
+
|
53
|
+
(The MIT License)
|
54
|
+
|
55
|
+
Copyright (c) 2009 Eric Hodel, blaxter
|
56
|
+
|
57
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
58
|
+
a copy of this software and associated documentation files (the
|
59
|
+
'Software'), to deal in the Software without restriction, including
|
60
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
61
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
62
|
+
permit persons to whom the Software is furnished to do so, subject to
|
63
|
+
the following conditions:
|
64
|
+
|
65
|
+
The above copyright notice and this permission notice shall be
|
66
|
+
included in all copies or substantial portions of the Software.
|
67
|
+
|
68
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
69
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
70
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
71
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
72
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
73
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
74
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'jeweler'
|
5
|
+
Jeweler::Tasks.new do |gem|
|
6
|
+
gem.name = "rubygems-isitjruby"
|
7
|
+
gem.summary = "Check whether a gem is compatible with jruby on http://isitjruby.com"
|
8
|
+
gem.description = "Once the gem is installed, in every gem install command you'll get a message with info fetched from isitjruby.com website. Also you'll have a gem isitjruby command for getting those messages for the gem already installed in your system"
|
9
|
+
gem.email = "blaxter@gmail.com"
|
10
|
+
gem.homepage = "http://github.com/blaxter/rubygems-isitjruby"
|
11
|
+
gem.authors = ["blaxter", "Eric Hodel"]
|
12
|
+
|
13
|
+
gem.add_dependency 'json-jruby', '>= 1.1.7'
|
14
|
+
end
|
15
|
+
rescue LoadError
|
16
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
17
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.1.2
|
data/lib/isit19.rb
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rubygems/remote_fetcher'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
##
|
6
|
+
# Utilities for determining if a Gem::Specification is ruby 1.9 ready. Based
|
7
|
+
# on http://isitruby19.com
|
8
|
+
|
9
|
+
class IsIt19
|
10
|
+
|
11
|
+
##
|
12
|
+
# This version of rubygems-isit19
|
13
|
+
|
14
|
+
VERSION = '1.1.1'
|
15
|
+
|
16
|
+
##
|
17
|
+
# Comments for this gem
|
18
|
+
|
19
|
+
attr_reader :comments
|
20
|
+
|
21
|
+
##
|
22
|
+
# The gemspec
|
23
|
+
|
24
|
+
attr_reader :spec
|
25
|
+
|
26
|
+
##
|
27
|
+
# Downloads comments for +spec+ from http://isitruby19.com
|
28
|
+
|
29
|
+
def initialize(spec)
|
30
|
+
@spec = spec
|
31
|
+
end
|
32
|
+
|
33
|
+
def fetch!
|
34
|
+
comments_url = URI.parse "#{url}/comments.json"
|
35
|
+
|
36
|
+
json = Gem::RemoteFetcher.fetcher.fetch_path comments_url
|
37
|
+
comments = JSON.parse json
|
38
|
+
|
39
|
+
comments.map! do |comment|
|
40
|
+
begin
|
41
|
+
comment['comment']['version'] =
|
42
|
+
Gem::Version.new comment['comment']['version']
|
43
|
+
comment['comment']
|
44
|
+
rescue ArgumentError # bad data from isitruby19.com
|
45
|
+
next
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
comments.compact!
|
50
|
+
|
51
|
+
@comments = comments.sort_by do |comment|
|
52
|
+
works = comment['works_for_me'] ? 1 : 0
|
53
|
+
[comment['version'], works, comment['name']]
|
54
|
+
end.reverse
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Strict check for this version
|
59
|
+
|
60
|
+
def is_it_for_sure?
|
61
|
+
@comments.any? do |comment|
|
62
|
+
comment['version'] == @spec.version and comment['works_for_me']
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
##
|
67
|
+
# Returns a comment from the latest version that worked with 1.9
|
68
|
+
|
69
|
+
def maybe_is_it?
|
70
|
+
@comments.detect do |comment|
|
71
|
+
comment['works_for_me']
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
##
|
76
|
+
# Returns the more recent comment about this gem
|
77
|
+
|
78
|
+
def more_recent
|
79
|
+
@comments.sort.last if are_there_comments?
|
80
|
+
end
|
81
|
+
|
82
|
+
##
|
83
|
+
# Whether are the any comments
|
84
|
+
def are_there_comments?
|
85
|
+
@comments.size > 0
|
86
|
+
end
|
87
|
+
|
88
|
+
##
|
89
|
+
# Returns a percentage of people saying +version+ worked for them
|
90
|
+
|
91
|
+
def percent(version = @spec.version)
|
92
|
+
matching = @comments.select do |comment|
|
93
|
+
comment['version'] == version
|
94
|
+
end
|
95
|
+
|
96
|
+
works = matching.select do |comment| comment['works_for_me'] end.length
|
97
|
+
|
98
|
+
percent = (matching.length.to_f / works * 100)
|
99
|
+
percent = 0 if percent.nan?
|
100
|
+
percent = 100 if percent > 100
|
101
|
+
|
102
|
+
"%2.0f%%" % percent
|
103
|
+
end
|
104
|
+
|
105
|
+
##
|
106
|
+
# URL of this gem on http://isitruby19.com
|
107
|
+
|
108
|
+
def url
|
109
|
+
"http://isitruby19.com/#{spec.name}"
|
110
|
+
end
|
111
|
+
|
112
|
+
def platform
|
113
|
+
"1.9"
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
class IsItJruby < IsIt19
|
118
|
+
def url
|
119
|
+
"http://isitjruby.com/#{spec.name}"
|
120
|
+
end
|
121
|
+
|
122
|
+
def platform
|
123
|
+
"jruby"
|
124
|
+
end
|
125
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'rubygems/command'
|
2
|
+
require 'rubygems/version_option'
|
3
|
+
require 'rubygems/text'
|
4
|
+
require 'isit19'
|
5
|
+
|
6
|
+
class Gem::Commands::Isit19Command < Gem::Command
|
7
|
+
|
8
|
+
include Gem::VersionOption
|
9
|
+
include Gem::Text
|
10
|
+
|
11
|
+
COMMAND = 'isit19'
|
12
|
+
DESCRIPTION = 'Check isitruby19.com for ruby 1.9 compatibility'
|
13
|
+
|
14
|
+
def initialize(command=COMMAND, description=DESCRIPTION)
|
15
|
+
super command, description, :version => Gem::Requirement.default
|
16
|
+
|
17
|
+
add_version_option
|
18
|
+
end
|
19
|
+
|
20
|
+
def arguments # :nodoc:
|
21
|
+
'GEMNAME name of an installed gem to check for 1.9 compatibility'
|
22
|
+
end
|
23
|
+
|
24
|
+
def defaults_str # :nodoc:
|
25
|
+
"--version='>= 0'"
|
26
|
+
end
|
27
|
+
|
28
|
+
def usage # :nodoc:
|
29
|
+
"#{program_name} GEMNAME [options]"
|
30
|
+
end
|
31
|
+
|
32
|
+
def execute
|
33
|
+
name = get_one_gem_name
|
34
|
+
|
35
|
+
dep = Gem::Dependency.new name, options[:version]
|
36
|
+
specs = Gem.source_index.search dep
|
37
|
+
|
38
|
+
if specs.empty? then
|
39
|
+
alert_error "No installed gem #{dep}"
|
40
|
+
terminate_interaction 1
|
41
|
+
end
|
42
|
+
|
43
|
+
spec = specs.last
|
44
|
+
|
45
|
+
isit19 = new_instance_isit(spec)
|
46
|
+
isit19.fetch!
|
47
|
+
|
48
|
+
comments = isit19.comments
|
49
|
+
|
50
|
+
say "#{spec.name} #{spec.version}: #{isit19.url}"
|
51
|
+
|
52
|
+
say ' No reports!' if comments.empty?
|
53
|
+
|
54
|
+
last_seen_version = nil
|
55
|
+
|
56
|
+
comments.each_with_index do |comment, i|
|
57
|
+
break if i > 0 and comment['version'] != last_seen_version
|
58
|
+
|
59
|
+
works = comment['works_for_me'] ? 'works' : 'fails'
|
60
|
+
platform = comment['platform'].values.join ' ' if comment['platform']
|
61
|
+
|
62
|
+
msg = "#{comment['name']} says #{comment['version']} #{works}"
|
63
|
+
msg << " on #{platform}" if platform
|
64
|
+
|
65
|
+
say " #{msg}"
|
66
|
+
say format_text(comment['body'], 68, 8) unless comment['body'].empty?
|
67
|
+
say
|
68
|
+
|
69
|
+
last_seen_version = comment['version']
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
protected
|
74
|
+
|
75
|
+
def new_instance_isit(spec)
|
76
|
+
IsIt19.new spec
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rubygems/command'
|
2
|
+
require 'rubygems/version_option'
|
3
|
+
require 'rubygems/text'
|
4
|
+
require 'rubygems/commands/isit19_command.rb'
|
5
|
+
|
6
|
+
class Gem::Commands::IsitjrubyCommand < Gem::Commands::Isit19Command
|
7
|
+
|
8
|
+
COMMAND = 'isitjruby'
|
9
|
+
DESCRIPTION = 'Check isitjruby.com for jruby compatibility'
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
super COMMAND, DESCRIPTION
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
def new_instance_isit(spec)
|
18
|
+
IsItJruby.new spec
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'rubygems/command_manager'
|
2
|
+
|
3
|
+
if PLATFORM =~ /java/
|
4
|
+
Gem::CommandManager.instance.register_command :isitjruby
|
5
|
+
else
|
6
|
+
Gem::CommandManager.instance.register_command :isit19
|
7
|
+
end
|
8
|
+
|
9
|
+
Gem.pre_install do |i| # installer
|
10
|
+
require 'isit19'
|
11
|
+
|
12
|
+
next if i.instance_variable_defined? :@isit19_ran
|
13
|
+
|
14
|
+
i.instance_variable_set :@isit19_ran, true
|
15
|
+
|
16
|
+
spec = i.spec
|
17
|
+
name = "#{spec.name} #{spec.version}"
|
18
|
+
|
19
|
+
isit19 = nil
|
20
|
+
begin
|
21
|
+
klass = PLATFORM =~ /java/ ? IsItJruby : IsIt19
|
22
|
+
isit19 = klass.new i.spec
|
23
|
+
isit19.fetch!
|
24
|
+
rescue Gem::RemoteFetcher::FetchError => e
|
25
|
+
i.say "uh-oh! unable to fetch data for #{name}, maybe it doesn't exist yet?"
|
26
|
+
i.say isit19.url
|
27
|
+
next
|
28
|
+
end
|
29
|
+
|
30
|
+
i.say
|
31
|
+
|
32
|
+
if isit19.are_there_comments?
|
33
|
+
if isit19.is_it_for_sure? then
|
34
|
+
i.say "#{name} is #{isit19.percent} verified #{isit19.platform}"
|
35
|
+
elsif ( comment = isit19.maybe_is_it? )
|
36
|
+
working = comment['version']
|
37
|
+
i.say "#{name} might work, #{isit19.percent working} say #{working} works on #{isit19.platform}"
|
38
|
+
else
|
39
|
+
comment = isit19.more_recent
|
40
|
+
works = comment['works_for_me'] ? 'works' : 'fails'
|
41
|
+
msg = "#{comment['name']} says #{comment['version']} #{works}"
|
42
|
+
|
43
|
+
i.say "#{name} probably might not work, #{msg}"
|
44
|
+
end
|
45
|
+
else
|
46
|
+
i.say "Nobody has verified #{name} works with #{isit19.platform}"
|
47
|
+
end
|
48
|
+
|
49
|
+
i.say "Update #{isit19.url} with your experiences!"
|
50
|
+
i.say
|
51
|
+
end
|
52
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{rubygems-isitjruby}
|
8
|
+
s.version = "1.1.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["blaxter", "Eric Hodel"]
|
12
|
+
s.date = %q{2009-08-24}
|
13
|
+
s.description = %q{Once the gem is installed, in every gem install command you'll get a message with info fetched from isitjruby.com website. Also you'll have a gem isitjruby command for getting those messages for the gem already installed in your system}
|
14
|
+
s.email = %q{blaxter@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.rst"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
"History.txt",
|
20
|
+
"Manifest.txt",
|
21
|
+
"README.rst",
|
22
|
+
"Rakefile",
|
23
|
+
"VERSION",
|
24
|
+
"lib/isit19.rb",
|
25
|
+
"lib/rubygems/commands/isit19_command.rb",
|
26
|
+
"lib/rubygems/commands/isitjruby_command.rb",
|
27
|
+
"lib/rubygems_plugin.rb",
|
28
|
+
"rubygems-isitjruby.gemspec"
|
29
|
+
]
|
30
|
+
s.homepage = %q{http://github.com/blaxter/rubygems-isitjruby}
|
31
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
32
|
+
s.require_paths = ["lib"]
|
33
|
+
s.rubygems_version = %q{1.3.5}
|
34
|
+
s.summary = %q{Check whether a gem is compatible with jruby on http://isitjruby.com}
|
35
|
+
|
36
|
+
if s.respond_to? :specification_version then
|
37
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
38
|
+
s.specification_version = 3
|
39
|
+
|
40
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
41
|
+
s.add_runtime_dependency(%q<json-jruby>, [">= 1.1.7"])
|
42
|
+
else
|
43
|
+
s.add_dependency(%q<json-jruby>, [">= 1.1.7"])
|
44
|
+
end
|
45
|
+
else
|
46
|
+
s.add_dependency(%q<json-jruby>, [">= 1.1.7"])
|
47
|
+
end
|
48
|
+
end
|
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rubygems-isitjruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- blaxter
|
8
|
+
- Eric Hodel
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2009-08-24 00:00:00 +02:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: json-jruby
|
18
|
+
type: :runtime
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 1.1.7
|
25
|
+
version:
|
26
|
+
description: Once the gem is installed, in every gem install command you'll get a message with info fetched from isitjruby.com website. Also you'll have a gem isitjruby command for getting those messages for the gem already installed in your system
|
27
|
+
email: blaxter@gmail.com
|
28
|
+
executables: []
|
29
|
+
|
30
|
+
extensions: []
|
31
|
+
|
32
|
+
extra_rdoc_files:
|
33
|
+
- README.rst
|
34
|
+
files:
|
35
|
+
- History.txt
|
36
|
+
- Manifest.txt
|
37
|
+
- README.rst
|
38
|
+
- Rakefile
|
39
|
+
- VERSION
|
40
|
+
- lib/isit19.rb
|
41
|
+
- lib/rubygems/commands/isit19_command.rb
|
42
|
+
- lib/rubygems/commands/isitjruby_command.rb
|
43
|
+
- lib/rubygems_plugin.rb
|
44
|
+
- rubygems-isitjruby.gemspec
|
45
|
+
has_rdoc: true
|
46
|
+
homepage: http://github.com/blaxter/rubygems-isitjruby
|
47
|
+
licenses: []
|
48
|
+
|
49
|
+
post_install_message:
|
50
|
+
rdoc_options:
|
51
|
+
- --charset=UTF-8
|
52
|
+
require_paths:
|
53
|
+
- lib
|
54
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: "0"
|
59
|
+
version:
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: "0"
|
65
|
+
version:
|
66
|
+
requirements: []
|
67
|
+
|
68
|
+
rubyforge_project:
|
69
|
+
rubygems_version: 1.3.5
|
70
|
+
signing_key:
|
71
|
+
specification_version: 3
|
72
|
+
summary: Check whether a gem is compatible with jruby on http://isitjruby.com
|
73
|
+
test_files: []
|
74
|
+
|