ixtlan-core 0.7.4 → 0.7.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1,160 @@
1
- require 'maven/cucumber_steps'
1
+ require 'fileutils'
2
+ require 'ruby-maven'
3
+ module Maven
4
+ class CucumberSteps
5
+
6
+ def initialize(options = {})
7
+ @options = {:ruby_version => RUBY_VERSION }
8
+ @options[:jruby_version] = JRUBY_VERSION if defined? JRUBY_VERSION
9
+
10
+ @options.merge!(options || {})
11
+ end
12
+
13
+ def rmvn
14
+ @rmvn ||= Maven::RubyMaven.new
15
+ end
16
+
17
+ def copy_tests(tests)
18
+ FileUtils.mkdir_p(@app_directory)
19
+ FileUtils.cp_r(File.join('templates', "tests-#{tests}", "."),
20
+ File.join(@app_directory, 'test'),
21
+ :remove_destination => true)
22
+ end
23
+
24
+ def copy_specs(specs)
25
+ FileUtils.mkdir_p(@app_directory)
26
+ FileUtils.cp_r(File.join('templates', "specs-#{specs}", "."),
27
+ File.join(@app_directory, 'spec'),
28
+ :remove_destination => true)
29
+ end
30
+
31
+ def copy_files(files)
32
+ FileUtils.mkdir_p(@app_directory)
33
+ FileUtils.cp_r(File.join('templates', "files-#{files}", "."),
34
+ @app_directory,
35
+ :remove_destination => true)
36
+ end
37
+
38
+ def create_rails_application(template)
39
+ name = template.sub(/.template$/, '')
40
+ @app_directory = File.join('target', name)
41
+
42
+ # rails version from gemspec
43
+ gemspec = File.read(Dir.glob("*.gemspec")[0])
44
+ rails_version = gemspec.split("\n").detect { |l| l =~ /development_dep.*rails/ }.sub(/'$/, '').sub(/.*'/, '')
45
+
46
+ rmvn.options['-Dplugin.version'] = @options[:plugin_version] if @options[:plugin_version]
47
+ rmvn.options['-Djruby.version'] = @options[:jruby_version] if @options[:jruby_version]
48
+ if @options[:ruby_version]
49
+ rversion = @options[:ruby_version] =~ /^1.8./ ? '--1.8': '--1.9'
50
+ rmvn.options['-Djruby.switches'] = rversion
51
+ end
52
+
53
+ rmvn.options['-Drails.version'] = rails_version
54
+ rmvn.options['-Dgem.home'] = ENV['GEM_HOME']
55
+ rmvn.options['-Dgem.path'] = ENV['GEM_PATH']
56
+ rmvn.options['-o'] = nil
57
+
58
+ FileUtils.rm_rf(@app_directory)
59
+
60
+ template_file = File.expand_path("templates/#{template}")
61
+ rmvn.exec("rails", "new", @app_directory, "-f", '--', '-e', "-Dtemplate=#{template_file}")
62
+ end
63
+
64
+ def given_template(template)
65
+ create_rails_application(template)
66
+ end
67
+
68
+ def given_template_and_tests(template, tests)
69
+ create_rails_application(template)
70
+ copy_tests(tests)
71
+ end
72
+
73
+ def given_template_and_specs(template, specs)
74
+ create_rails_application(template)
75
+ copy_specs(specs)
76
+ end
77
+
78
+ def given_template_and_files(template, files)
79
+ create_rails_application(template)
80
+ copy_files(files)
81
+ end
82
+
83
+ def given_application(name)
84
+ @app_directory = File.join('target', name)
85
+ end
86
+
87
+ def given_application_and_tests(name, tests)
88
+ @app_directory = File.join('target', name)
89
+ copy_tests(tests)
90
+ end
91
+
92
+ def given_application_and_specs(name, specs)
93
+ @app_directory = File.join('target', name)
94
+ copy_specs(specs)
95
+ end
96
+
97
+ def given_application_and_files(name, files)
98
+ @app_directory = File.join('target', name)
99
+ copy_files(files)
100
+ end
101
+
102
+ def execute(args)
103
+ rmvn.options['-l'] = "output.log"
104
+ rmvn.exec_in(@app_directory, args.split(' '))
105
+ end
106
+
107
+ def expected_output(expected)
108
+ result = File.read(File.join(@app_directory, "output.log"))
109
+ expected.split(/\"?\s+and\s+\"?/).each do |exp|
110
+ puts exp
111
+ yield(result =~ /.*#{exp}.*/)
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+
118
+ steps = Maven::CucumberSteps.new(:plugin_version => '0.29.0')
119
+
120
+ Given /^I create new rails application with template "(.*)"$/ do |template|
121
+ steps.given_template(template)
122
+ end
123
+
124
+ Given /^I create new rails application with template "(.*)" and "(.*)" tests$/ do |template, tests|
125
+ steps.given_template_and_tests(template, tests)
126
+ end
127
+
128
+ Given /^I create new rails application with template "(.*)" and "(.*)" specs$/ do |template, specs|
129
+ steps.given_template_and_specs(template, specs)
130
+ end
131
+
132
+ Given /^I create new rails application with template "(.*)" and "(.*)" files$/ do |template, files|
133
+ steps.given_template_and_files(template, files)
134
+ end
135
+
136
+ Given /^me an existing rails application "(.*)"$/ do |name|
137
+ steps.given_application(name)
138
+ end
139
+
140
+ Given /^me an existing rails application "(.*)" and "(.*)" tests$/ do |name, tests|
141
+ steps.given_application_and_tests(name, tests)
142
+ end
143
+
144
+ Given /^me an existing rails application "(.*)" and "(.*)" specs$/ do |name, specs|
145
+ steps.given_application_and_specs(name, specs)
146
+ end
147
+
148
+ Given /^me an existing rails application "(.*)" and "(.*)" files$/ do |name, files|
149
+ steps.given_application_and_files(name, files)
150
+ end
151
+
152
+ And /^I execute \"(.*)\"$/ do |args|
153
+ steps.execute(args)
154
+ end
155
+
156
+ Then /^the output should contain \"(.*)\"$/ do |expected|
157
+ steps.expected_output(expected) do |exp|
158
+ exp.should_not be_nil
159
+ end
160
+ end
@@ -3,14 +3,17 @@ module Ixtlan
3
3
  module ActiveRecord
4
4
 
5
5
  def self.included(base)
6
+ warn 'deprecated: use ixtlan-optimistic instead'
6
7
  base.class_eval do
7
8
 
8
9
  def self.optimistic_find(updated_at, *args)
9
- if updated_at
10
- updated_at_date = new(:updated_at => updated_at).updated_at
10
+ if updated_at
11
+ dummy = self.new
12
+ dummy.updated_at = updated_at
13
+ updated_at_date = dummy.updated_at
11
14
  # try different ways to use the date
12
15
  # TODO maybe there is a nicer way ??
13
- first(:conditions => ["id = ? and updated_at <= ? and updated_at >= ?", args[0], updated_at + 0.0005, updated_at_date - 0.0005]) || first(:conditions => ["id = ? and updated_at <= ? and updated_at >= ?", args[0], updated_at_date + 0.0005, updated_at_date - 0.0005])
16
+ first(:conditions => ["id = ? and updated_at <= ? and updated_at >= ?", args[0], updated_at_date + 0.0005, updated_at_date - 0.0005])
14
17
  # TODO make it work with different PKs
15
18
  end
16
19
  end
@@ -2,16 +2,15 @@ module Ixtlan
2
2
  module Core
3
3
  module DataMapper
4
4
 
5
- def self.included(base)
5
+ def self.included(base)
6
+ warn 'deprecated: use ixtlan-optimistic instead'
6
7
  base.class_eval do
7
8
 
8
- attr_accessor :current_user
9
-
10
- def optimistic_find(updated_at, *args)
9
+ def self.optimistic_get(updated_at, *args)
11
10
  if updated_at
12
- updated_at = new(:updated_at => updated_at).updated_at
11
+ updated_at_date = new(:updated_at => updated_at).updated_at
13
12
  # TODO make it work with different PKs
14
- first(:id => args[0], :updated_at => updated_at)
13
+ first(:id => args[0], :updated_at.gte => updated_at_date - 0.0005, :updated_at.lte => updated_at_date + 0.0005)
15
14
  end
16
15
  end
17
16
  end
@@ -34,7 +34,9 @@ module Ixtlan
34
34
  end
35
35
 
36
36
  class Railtie < Rails::Railtie
37
- config.generators do |config|
37
+
38
+ gmethod = config.respond_to?(:generators)? :generators : :app_generators
39
+ config.send(gmethod) do |config|
38
40
 
39
41
  config.templates << File.expand_path('../../../generators/rails', __FILE__)
40
42
 
@@ -63,8 +65,7 @@ module Ixtlan
63
65
 
64
66
  if defined? ::DataMapper
65
67
 
66
- ::DataMapper::Resource.send(:include,
67
- Ixtlan::Core::DataMapper)
68
+ ::DataMapper::Model.append_inclusions(Ixtlan::Core::DataMapper)
68
69
 
69
70
  elsif defined? ::ActiveRecord
70
71
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: ixtlan-core
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.7.4
5
+ version: 0.7.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - mkristian
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-05-13 00:00:00 Z
13
+ date: 2012-07-03 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: slf4r
@@ -75,7 +75,7 @@ dependencies:
75
75
  requirements:
76
76
  - - "="
77
77
  - !ruby/object:Gem::Version
78
- version: 3.0.3.0.28.5
78
+ version: 3.0.4.0.29.0
79
79
  type: :development
80
80
  version_requirements: *id006
81
81
  description: cache header control, dynamic configuration, and optimistic find on model via updated_at timestamp
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  requirements: []
146
146
 
147
147
  rubyforge_project:
148
- rubygems_version: 1.8.9
148
+ rubygems_version: 1.8.24
149
149
  signing_key:
150
150
  specification_version: 3
151
151
  summary: cache header control, dynamic configuration, and optimistic find on model via updated_at timestamp