fedux_org-stdlib 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,5 @@
1
1
  require 'active_support/core_ext/string/inflections'
2
+ require 'active_support/core_ext/object/blank'
2
3
  require 'fedux_org/stdlib/models/filesystem_based_model'
3
4
 
4
5
  module FeduxOrg
@@ -44,6 +45,8 @@ module FeduxOrg
44
45
  def load_from_filesystem
45
46
  files = Dir.glob( path_to_instances )
46
47
 
48
+ raise FeduxOrg::Stdlib::Models::Exceptions::NoImplementationsForModelFound, "You might need to store files at \"#{File.dirname(path_to_instances)}\" to make the library work." if files.blank?
49
+
47
50
  files.each do |f|
48
51
  instance_name = name( f )
49
52
 
@@ -23,6 +23,9 @@ module FeduxOrg
23
23
  #raised if one tries to use an unimplemented exception
24
24
  class ExceptionNeedsToBeImplemented < InternalError; end
25
25
 
26
+ #raised if one forgot to store files at `path_to_instances`
27
+ class NoImplementationsForModelFound < InternalError; end
28
+
26
29
  #raised if an file system error occured
27
30
  class FilesystemError < Exception ; end
28
31
 
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env rake
2
+
3
+ unless ENV['TRAVIS_CI'] == 'true'
4
+ namespace :gem do
5
+ require 'bundler/gem_tasks'
6
+ end
7
+
8
+ require 'yard'
9
+ require 'rubygems/package_task'
10
+ require 'active_support/core_ext/string/strip'
11
+ require 'erubis'
12
+ end
13
+
14
+ YARD::Rake::YardocTask.new() do |y|
15
+ # y.options << '--verbose'
16
+ end
17
+
18
+
19
+ desc 'start tmux'
20
+ task :terminal do
21
+ sh "script/terminal"
22
+ end
23
+
24
+ task :term => :terminal
25
+ task :t => :terminal
26
+
27
+ namespace :version do
28
+ version_file = Dir.glob('lib/**/version.rb').first
29
+
30
+ desc 'bump version of library to new version'
31
+ task :bump do
32
+
33
+ new_version = ENV['VERSION'] || ENV['version']
34
+
35
+ raw_module_names = File.open(version_file, "r").readlines.grep(/module/)
36
+ module_names = raw_module_names.collect { |n| n.chomp.match(/module\s+(\S+)/) {$1} }
37
+
38
+ template = <<-EOF
39
+ #main <%= @modules.first %>
40
+ <% @modules.each do |m| %>
41
+ module <%= m %>
42
+ <% end %>
43
+ VERSION = '<%= @version %>'
44
+ <% @modules.size.times do |m| %>
45
+ end
46
+ <% end %>
47
+ EOF
48
+
49
+ version_string = Erubis::Eruby.new(template).evaluate(modules: module_names, version: new_version)
50
+
51
+ File.open(version_file, "w") do |f|
52
+ f.write version_string.strip_heredoc
53
+ end
54
+
55
+ sh "git add #{version_file}"
56
+ sh "git commit -m 'version bump to #{new_version}'"
57
+ #project = 'the_array_comparator'
58
+ #sh "git tag #{project}-v#{new_version}"
59
+ end
60
+
61
+ desc 'show version of library'
62
+ task :show do
63
+ raw_version = File.open(version_file, "r").readlines.grep(/VERSION/).first
64
+
65
+ if raw_version
66
+ version = raw_version.chomp.match(/VERSION\s+=\s+["']([^'"]+)["']/) { $1 }
67
+ puts version
68
+ else
69
+ warn "Could not parse version file \"#{version_file}\""
70
+ end
71
+
72
+ end
73
+
74
+ desc 'Restore version file from git repository'
75
+ task :restore do
76
+ sh "git checkout #{version_file}"
77
+ end
78
+
79
+ end
80
+
81
+ namespace :travis do
82
+ desc 'Runs travis-lint to check .travis.yml'
83
+ task :check do
84
+ sh 'travis-lint'
85
+ end
86
+ end
87
+
88
+ namespace :test do
89
+ desc 'Run specs'
90
+ task :specs do
91
+ sh 'bundle exec rspec spec'
92
+ end
93
+
94
+ desc 'Run tests in "travis mode"'
95
+ task :travis_specs do
96
+ ENV['TRAVIS_CI'] = 'true'
97
+ sh 'rspec spec'
98
+ sh 'cucumber -p all'
99
+ end
100
+ end
101
+
102
+ task :console do
103
+ sh 'script/console'
104
+ end
@@ -1,6 +1,6 @@
1
1
  #main FeduxOrg
2
2
  module FeduxOrg
3
3
  module Stdlib
4
- VERSION = '0.0.4'
4
+ VERSION = '0.0.5'
5
5
  end
6
6
  end
@@ -240,4 +240,26 @@ describe Models::ClassBasedModel do
240
240
  }.to raise_error FeduxOrg::Stdlib::Models::Exceptions::UnauthorizedUseOfKeyword
241
241
  end
242
242
 
243
+ it "raises an exception if no valid algorithms could be found for model" do
244
+ klass = Class.new(FeduxOrg::Stdlib::Models::BaseModel) do
245
+ include FeduxOrg::Stdlib::Models::FilesystemBasedModel
246
+ include FeduxOrg::Stdlib::Models::ClassBasedModel
247
+
248
+ def self.module_name
249
+ 'ProjectXY'
250
+ end
251
+
252
+ def self.model_name
253
+ 'Internal'
254
+ end
255
+
256
+ def self.path
257
+ 'asdfasf'
258
+ end
259
+ end
260
+ expect {
261
+ klass.send(:load_from_filesystem)
262
+ }.to raise_error FeduxOrg::Stdlib::Models::Exceptions::NoImplementationsForModelFound
263
+ end
264
+
243
265
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fedux_org-stdlib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -89,6 +89,7 @@ files:
89
89
  - lib/fedux_org/stdlib/models/class_based_model.rb
90
90
  - lib/fedux_org/stdlib/models/exceptions.rb
91
91
  - lib/fedux_org/stdlib/models/filesystem_based_model.rb
92
+ - lib/fedux_org/stdlib/rake/library.rake
92
93
  - lib/fedux_org/stdlib/version.rb
93
94
  - script/console
94
95
  - script/terminal