firefly 0.4.1 → 0.4.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/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
1
  *.sqlite3
2
2
  config.ru
3
3
  pkg
4
+ .rvmrc
5
+ *.swp
data/HISTORY CHANGED
@@ -1,3 +1,7 @@
1
+ = 0.4.2 / 2010-06-06
2
+
3
+ * 2010-06-06 - Added a fix for MySQL users to update the `code` column to use the correct collation. Fixes #9 [ariejan]
4
+
1
5
  = 0.4.1 / 2010-04-30
2
6
 
3
7
  * 2010-04-30 - Normalize URLs before shortening them. This prevents false duplicates. [ariejan]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.4.2
data/firefly.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{firefly}
8
- s.version = "0.4.1"
8
+ s.version = "0.4.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ariejan de Vroom"]
12
- s.date = %q{2010-04-30}
12
+ s.date = %q{2010-06-06}
13
13
  s.description = %q{FireFly is a simple URL shortner for personal use. It's powered by Sinatra and can be run with any Rack-capable web server.}
14
14
  s.email = %q{ariejan@ariejan.net}
15
15
  s.extra_rdoc_files = [
@@ -50,7 +50,7 @@ Gem::Specification.new do |s|
50
50
  s.rdoc_options = ["--charset=UTF-8"]
51
51
  s.require_paths = ["lib"]
52
52
  s.rubyforge_project = %q{firefly}
53
- s.rubygems_version = %q{1.3.6}
53
+ s.rubygems_version = %q{1.3.7}
54
54
  s.summary = %q{FireFly is a simple URL shortner for personal use}
55
55
  s.test_files = [
56
56
  "spec/firefly/api_spec.rb",
@@ -64,7 +64,7 @@ Gem::Specification.new do |s|
64
64
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
65
65
  s.specification_version = 3
66
66
 
67
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
67
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
68
68
  s.add_runtime_dependency(%q<sinatra>, [">= 1.0"])
69
69
  s.add_runtime_dependency(%q<dm-core>, [">= 0.10.2"])
70
70
  s.add_runtime_dependency(%q<dm-aggregates>, [">= 0.10.2"])
@@ -163,11 +163,40 @@ module Firefly
163
163
  begin
164
164
  DataMapper.setup(:default, @config[:database])
165
165
  DataMapper.auto_upgrade!
166
+ check_mysql_collation
166
167
  rescue
167
168
  puts "Error setting up database connection. Please check the `database` setting in config.ru"
169
+ puts $!
170
+ puts "-------"
171
+ puts $!.backtrace
168
172
  exit(1)
169
173
  end
170
174
  end
175
+
176
+ def check_mysql_collation(first_try = true)
177
+ # Make sure the 'code' column is case-sensitive. This hack is for
178
+ # MySQL only, other database systems don't have this problem.
179
+ if DataMapper.repository(:default).adapter =~ "DataMapper::Adapters::MysqlAdapter"
180
+ query = "SHOW FULL COLUMNS FROM firefly_urls WHERE Field='code';"
181
+ collation = DataMapper.repository(:default).adapter.select(query)[0][:collation]
182
+
183
+ if collation != "utf8_bin"
184
+ if first_try
185
+ puts " ~ Your MySQL database is not using the 'utf8-bin' collation. Trying to fix..."
186
+ DataMapper.repository(:default).adapter.execute("ALTER TABLE firefly_urls MODIFY `code` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin;")
187
+ return check_mysql_collation(false)
188
+ else
189
+ puts " ~ Failed to set the collation for `code` in `firefly_urls`. Please see http://wiki.github.com/ariejan/firefly/faq for details."
190
+ return false
191
+ end
192
+ else
193
+ if !first_try
194
+ puts " ~ Successfully fixed your database."
195
+ end
196
+ return true
197
+ end
198
+ end
199
+ end
171
200
  end
172
201
  end
173
202
 
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firefly
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 11
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 4
8
- - 1
9
- version: 0.4.1
9
+ - 2
10
+ version: 0.4.2
10
11
  platform: ruby
11
12
  authors:
12
13
  - Ariejan de Vroom
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-04-30 00:00:00 +02:00
18
+ date: 2010-06-06 00:00:00 +02:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: sinatra
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 15
27
30
  segments:
28
31
  - 1
29
32
  - 0
@@ -34,9 +37,11 @@ dependencies:
34
37
  name: dm-core
35
38
  prerelease: false
36
39
  requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
37
41
  requirements:
38
42
  - - ">="
39
43
  - !ruby/object:Gem::Version
44
+ hash: 51
40
45
  segments:
41
46
  - 0
42
47
  - 10
@@ -48,9 +53,11 @@ dependencies:
48
53
  name: dm-aggregates
49
54
  prerelease: false
50
55
  requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
51
57
  requirements:
52
58
  - - ">="
53
59
  - !ruby/object:Gem::Version
60
+ hash: 51
54
61
  segments:
55
62
  - 0
56
63
  - 10
@@ -62,9 +69,11 @@ dependencies:
62
69
  name: do_sqlite3
63
70
  prerelease: false
64
71
  requirement: &id004 !ruby/object:Gem::Requirement
72
+ none: false
65
73
  requirements:
66
74
  - - ">="
67
75
  - !ruby/object:Gem::Version
76
+ hash: 25
68
77
  segments:
69
78
  - 0
70
79
  - 10
@@ -77,9 +86,11 @@ dependencies:
77
86
  name: haml
78
87
  prerelease: false
79
88
  requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
80
90
  requirements:
81
91
  - - ">="
82
92
  - !ruby/object:Gem::Version
93
+ hash: 43
83
94
  segments:
84
95
  - 2
85
96
  - 2
@@ -91,9 +102,11 @@ dependencies:
91
102
  name: rspec
92
103
  prerelease: false
93
104
  requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
94
106
  requirements:
95
107
  - - ">="
96
108
  - !ruby/object:Gem::Version
109
+ hash: 27
97
110
  segments:
98
111
  - 1
99
112
  - 3
@@ -105,9 +118,11 @@ dependencies:
105
118
  name: rack-test
106
119
  prerelease: false
107
120
  requirement: &id007 !ruby/object:Gem::Requirement
121
+ none: false
108
122
  requirements:
109
123
  - - ">="
110
124
  - !ruby/object:Gem::Version
125
+ hash: 13
111
126
  segments:
112
127
  - 0
113
128
  - 5
@@ -163,23 +178,27 @@ rdoc_options:
163
178
  require_paths:
164
179
  - lib
165
180
  required_ruby_version: !ruby/object:Gem::Requirement
181
+ none: false
166
182
  requirements:
167
183
  - - ">="
168
184
  - !ruby/object:Gem::Version
185
+ hash: 3
169
186
  segments:
170
187
  - 0
171
188
  version: "0"
172
189
  required_rubygems_version: !ruby/object:Gem::Requirement
190
+ none: false
173
191
  requirements:
174
192
  - - ">="
175
193
  - !ruby/object:Gem::Version
194
+ hash: 3
176
195
  segments:
177
196
  - 0
178
197
  version: "0"
179
198
  requirements: []
180
199
 
181
200
  rubyforge_project: firefly
182
- rubygems_version: 1.3.6
201
+ rubygems_version: 1.3.7
183
202
  signing_key:
184
203
  specification_version: 3
185
204
  summary: FireFly is a simple URL shortner for personal use