Skip to content

Commit d6d5e90

Browse files
committed
Clean up gemspec, refactoring
1 parent 6736c69 commit d6d5e90

10 files changed

+112
-81
lines changed

.travis.yml

+7-10
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
language: ruby
2-
before_script:
3-
- psql -c 'CREATE DATABASE hstore_translate_test;' -U postgres
4-
env:
5-
- RAILS_3_1=true
6-
- RAILS_3_2=true
7-
- RAILS_4=true
81
rvm:
9-
- 1.9.3
10-
- rbx-19mode
11-
- ruby-head
2+
- '1.9.3'
3+
- '2.0.0'
4+
- 'rbx-19mode'
5+
gemfile:
6+
- test/gemfiles/Gemfile.rails-3.1.x
7+
- test/gemfiles/Gemfile.rails-3.2.x
8+
- test/gemfiles/Gemfile.rails-4.0.x

Gemfile

+2-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
source "http://rubygems.org"
1+
source 'https://rubygems.org'
22

3-
if ENV["EDGE_RAILS"]
4-
gem 'pg'
5-
gem 'rails', :git => 'git://github.com/rails/rails'
6-
else
7-
gemspec
8-
end
3+
gemspec

Rakefile

+5-9
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
require 'rake'
21
require 'rake/testtask'
32

4-
desc 'Default: run unit tests.'
5-
task :default => :test
6-
7-
desc 'Test the ltree_hierarchy plugin.'
8-
Rake::TestTask.new(:test) do |t|
9-
t.libs << 'lib'
10-
t.pattern = 'test/**/*_test.rb'
11-
t.verbose = true
3+
Rake::TestTask.new do |t|
4+
t.libs << 'test'
5+
t.pattern = 'test/*_test.rb'
126
end
7+
8+
task :default => :test

hstore_translate.gemspec

+10-17
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,25 @@
1-
# -*- encoding: utf-8 -*-
2-
$:.push File.expand_path("../lib", __FILE__)
3-
require "hstore_translate/version"
1+
$:.push File.expand_path('../lib', __FILE__)
2+
require 'hstore_translate/version'
43

54
Gem::Specification.new do |s|
65
s.name = 'hstore_translate'
76
s.version = HstoreTranslate::VERSION
87
s.summary = "Rails I18n library for ActiveRecord model/data translation using PostgreSQL's hstore datatype."
98
s.description = "#{s.summary} Translations are stored directly in the model table rather than shadow tables."
10-
s.authors = ["Rob Worley"]
9+
s.authors = ['Rob Worley']
1110
s.email = '[email protected]'
12-
s.homepage = "https://github.com/robworley/hstore_translate"
13-
s.files = Dir['{lib/**/*,[A-Z]*}']
11+
s.homepage = 'https://github.com/robworley/hstore_translate'
1412
s.platform = Gem::Platform::RUBY
15-
s.require_paths = ["lib"]
16-
s.rubyforge_project = '[none]'
1713

18-
if ENV['RAILS_3_1']
19-
s.add_dependency 'activerecord', '~> 3.1.0'
20-
elsif ENV['RAILS_3_2']
21-
s.add_dependency 'activerecord', '~> 3.2.0'
22-
elsif ENV['RAILS_4']
23-
s.add_dependency 'activerecord', '4.0.0.rc2'
24-
else
25-
s.add_dependency 'activerecord', '>= 3.1.0'
26-
end
14+
s.files = Dir['lib/**/*.rb', 'README.md', 'MIT-LICENSE']
15+
s.test_files = Dir['test/**/*']
16+
s.require_paths = ['lib']
2717

2818
s.add_dependency 'pg'
19+
s.add_dependency 'activerecord', '>= 3.1.0'
2920
s.add_dependency 'activerecord-postgres-hstore', '~> 0.7.0'
3021

3122
s.add_development_dependency 'rake'
23+
s.add_development_dependency 'minitest', '~> 4.0'
24+
s.add_development_dependency 'database_cleaner'
3225
end

lib/hstore_translate.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
require "active_record/connection_adapters/postgresql_adapter"
2-
require "hstore_translate/translates"
3-
require "hstore_translate/version"
1+
require 'active_record'
2+
require 'active_record/connection_adapters/postgresql_adapter'
3+
require 'hstore_translate/translates'
44

55
module HstoreTranslate
66
def self.native_hstore?

test/gemfiles/Gemfile.rails-3.1.x

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
source 'https://rubygems.org'
2+
gemspec :path => './../..'
3+
4+
gem 'activerecord', '~> 3.1.0'

test/gemfiles/Gemfile.rails-3.2.x

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
source 'https://rubygems.org'
2+
gemspec :path => './../..'
3+
4+
gem 'activerecord', '~> 3.2.0'

test/gemfiles/Gemfile.rails-4.0.x

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
source 'https://rubygems.org'
2+
gemspec :path => './../..'
3+
4+
gem 'activerecord', '~> 4.0.0'

test/test_helper.rb

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
require 'minitest/autorun'
2+
require 'hstore_translate'
3+
4+
require 'database_cleaner'
5+
DatabaseCleaner.strategy = :transaction
6+
7+
class Post < ActiveRecord::Base
8+
translates :title
9+
end
10+
11+
class HstoreTranslate::Test < MiniTest::Unit::TestCase
12+
class << self
13+
def prepare_database
14+
create_database
15+
create_table
16+
end
17+
18+
private
19+
20+
def db_config
21+
@db_config ||= begin
22+
filepath = File.join('test', 'database.yml')
23+
YAML.load_file(filepath)['test']
24+
end
25+
end
26+
27+
def establish_connection(config)
28+
ActiveRecord::Base.establish_connection(config)
29+
ActiveRecord::Base.connection
30+
end
31+
32+
def create_database
33+
system_config = db_config.merge('database' => 'postgres', 'schema_search_path' => 'public')
34+
connection = establish_connection(system_config)
35+
connection.create_database(db_config['database']) rescue nil
36+
enable_extension
37+
end
38+
39+
def enable_extension
40+
connection = establish_connection(db_config)
41+
unless connection.select_value("SELECT proname FROM pg_proc WHERE proname = 'akeys'")
42+
if connection.send(:postgresql_version) < 90100
43+
pg_sharedir = `pg_config --sharedir`.strip
44+
hstore_script_path = File.join(pg_sharedir, 'contrib', 'hstore.sql')
45+
connection.execute(File.read(hstore_script_path))
46+
else
47+
connection.execute('CREATE EXTENSION IF NOT EXISTS hstore')
48+
end
49+
end
50+
end
51+
52+
def create_table
53+
connection = establish_connection(db_config)
54+
connection.create_table(:posts, :force => true) do |t|
55+
t.column :title_translations, 'hstore'
56+
end
57+
end
58+
end
59+
60+
prepare_database
61+
62+
def setup
63+
DatabaseCleaner.start
64+
end
65+
66+
def teardown
67+
DatabaseCleaner.clean
68+
end
69+
end

test/translates_test.rb

+4-35
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,7 @@
11
# -*- encoding : utf-8 -*-
2+
require 'test_helper'
23

3-
require 'rubygems'
4-
require 'active_record'
5-
require 'test/unit'
6-
7-
require 'hstore_translate'
8-
9-
class Post < ActiveRecord::Base
10-
translates :title
11-
end
12-
13-
class TranslatesTest < Test::Unit::TestCase
14-
def setup
15-
db_config = YAML.load(File.open(File.join(File.dirname(__FILE__), 'database.yml')).read)['test']
16-
17-
Post.establish_connection(db_config)
18-
19-
unless Post.connection.select_value("SELECT proname FROM pg_proc WHERE proname = 'akeys'")
20-
pgversion = Post.connection.send(:postgresql_version)
21-
22-
if pgversion < 90100
23-
pg_sharedir = `pg_config --sharedir`.strip
24-
hstore_script_path = File.join(pg_sharedir, "contrib", "hstore.sql")
25-
Post.connection.execute(File.read(hstore_script_path))
26-
else
27-
Post.connection.execute("CREATE EXTENSION IF NOT EXISTS hstore")
28-
end
29-
end
30-
31-
Post.connection.create_table(:posts, :force => true) do |t|
32-
t.column :title_translations, 'hstore'
33-
end
34-
end
35-
4+
class TranslatesTest < HstoreTranslate::Test
365
def test_assigns_in_current_locale
376
I18n.with_locale(:en) do
387
p = Post.new(:title => "English Title")
@@ -115,11 +84,11 @@ def test_retrieves_in_specified_locale_with_fallback_reenabled
11584
end
11685

11786
def test_method_missing_delegates
118-
assert_raise(NoMethodError) { Post.new.nonexistant_method }
87+
assert_raises(NoMethodError) { Post.new.nonexistant_method }
11988
end
12089

12190
def test_method_missing_delegates_non_translated_attributes
122-
assert_raise(NoMethodError) { Post.new.other_fr }
91+
assert_raises(NoMethodError) { Post.new.other_fr }
12392
end
12493

12594
def test_persists_translations_assigned_as_hash

0 commit comments

Comments
 (0)