tiny_core 0.0.1 → 0.0.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/lib/tiny_core.rb +10 -1
- data/lib/tiny_core/application.rb +5 -0
- data/lib/tiny_core/config.rb +15 -0
- data/lib/tiny_core/core_ext/dir.rb +29 -0
- data/lib/tiny_core/core_ext/i18n.rb +12 -0
- data/lib/tiny_core/helpers/action_list_helper.rb +29 -0
- data/lib/tiny_core/rails_ext/attr_protection.rb +25 -0
- data/lib/tiny_core/rails_ext/dirty_after_save.rb +27 -0
- data/lib/tiny_core/search_filter.rb +17 -0
- data/lib/tiny_core/tableless_model.rb +29 -0
- data/rails_generators/tiny_core/templates/application.rb +1 -0
- data/rails_generators/tiny_core/templates/version.rb +10 -0
- data/rails_generators/tiny_core/tiny_core_generator.rb +11 -0
- metadata +17 -6
- data/bin/tiny_core +0 -6
data/lib/tiny_core.rb
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# require all necessary files here
|
2
2
|
|
3
|
+
require File.dirname(__FILE__) + '/tiny_core/application'
|
4
|
+
require File.dirname(__FILE__) + '/tiny_core/build'
|
5
|
+
require File.dirname(__FILE__) + '/tiny_core/config'
|
6
|
+
require File.dirname(__FILE__) + '/tiny_core/core_ext/dir'
|
7
|
+
require File.dirname(__FILE__) + '/tiny_core/core_ext/i18n'
|
8
|
+
require File.dirname(__FILE__) + '/tiny_core/helpers/action_list_helper'
|
3
9
|
require File.dirname(__FILE__) + '/tiny_core/helpers/bread_crumb_helper'
|
4
10
|
require File.dirname(__FILE__) + '/tiny_core/helpers/tabs_helper'
|
5
|
-
require File.dirname(__FILE__) + '/tiny_core/
|
11
|
+
require File.dirname(__FILE__) + '/tiny_core/rails_ext/attr_protection'
|
12
|
+
require File.dirname(__FILE__) + '/tiny_core/rails_ext/dirty_after_save'
|
13
|
+
require File.dirname(__FILE__) + '/tiny_core/search_filter'
|
14
|
+
require File.dirname(__FILE__) + '/tiny_core/tableless_model'
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class Dir
|
2
|
+
@@creation_number = 0;
|
3
|
+
|
4
|
+
# Creates a temp dir in location and performs the supplied code block
|
5
|
+
def self.create_tmp_dir(name, location)
|
6
|
+
@@creation_number += 1
|
7
|
+
pid = Process.pid # This doesn't work on some platforms, according to the docs. A better way to get it would be nice.
|
8
|
+
random_number = Kernel.rand(1000000000).to_s # This is to avoid a possible symlink attack vulnerability in the creation of temporary files.
|
9
|
+
complete_dir_name = "#{location}/#{name}.#{pid}.#{random_number}.#{@@creation_number}"
|
10
|
+
|
11
|
+
yield_result = Object.new
|
12
|
+
|
13
|
+
self.mkdir(complete_dir_name)
|
14
|
+
|
15
|
+
# Changing dirs must be done in a block. When you call chdir normally, really weird
|
16
|
+
# stuff starts to happen. Functions fail silently, exceptions are ignored, etc...
|
17
|
+
self.chdir(complete_dir_name) do
|
18
|
+
begin
|
19
|
+
yield_result = yield
|
20
|
+
rescue
|
21
|
+
raise
|
22
|
+
ensure
|
23
|
+
FileUtils.rmtree(["#{complete_dir_name}"])
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
return yield_result
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module TinyCore
|
2
|
+
module ActionListHelper
|
3
|
+
def action_list(&block)
|
4
|
+
yield builder = ActionListBuilder.new(self)
|
5
|
+
concat(builder.build!)
|
6
|
+
end
|
7
|
+
|
8
|
+
class ActionListBuilder
|
9
|
+
def initialize(template)
|
10
|
+
@template = template
|
11
|
+
@items = []
|
12
|
+
end
|
13
|
+
|
14
|
+
def method_missing(method, *args)
|
15
|
+
if @template.respond_to?(method)
|
16
|
+
@items << @template.send(method, *args)
|
17
|
+
else
|
18
|
+
super
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def build!
|
23
|
+
@items.join(' | ')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
ActionController::Base.send :helper, TinyCore::ActionListHelper
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module TinyCore
|
2
|
+
module RailsExt
|
3
|
+
module AttrProtection
|
4
|
+
module ClassMethods
|
5
|
+
|
6
|
+
end
|
7
|
+
|
8
|
+
module InstanceMethods
|
9
|
+
def update_attributes_without_attr_protected(attributes)
|
10
|
+
attributes.each do |key, value|
|
11
|
+
self.send("#{key}=", value)
|
12
|
+
end
|
13
|
+
save
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.included(receiver)
|
18
|
+
receiver.extend ClassMethods
|
19
|
+
receiver.send :include, InstanceMethods
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
ActiveRecord::Base.send :include, TinyCore::RailsExt::AttrProtection
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module TinyCore
|
2
|
+
module RailsExt
|
3
|
+
module DirtyAfterSave
|
4
|
+
DIRTY_AFTER_SAVE_SUFFIXES = ['_changed_before_save?', '_change_before_save']
|
5
|
+
|
6
|
+
def self.included(base)
|
7
|
+
base.class_eval do
|
8
|
+
attr_accessor :changed_attributes_before_save
|
9
|
+
before_save { |build| build.changed_attributes_before_save = build.changes }
|
10
|
+
|
11
|
+
attribute_method_suffix *DIRTY_AFTER_SAVE_SUFFIXES
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
def attribute_changed_before_save?(attr)
|
17
|
+
changed_attributes_before_save.include?(attr)
|
18
|
+
end
|
19
|
+
|
20
|
+
def attribute_change_before_save(attr)
|
21
|
+
[changed_attributes_before_save[attr], __send__(attr)] if attribute_changed_before_save?(attr)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
ActiveRecord::Base.send :include, TinyCore::RailsExt::DirtyAfterSave
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Port me to ActiveModel in Rails 3
|
2
|
+
module TinyCore
|
3
|
+
class TablelessModel < ActiveRecord::Base
|
4
|
+
self.abstract_class = true
|
5
|
+
|
6
|
+
class_inheritable_array :columns
|
7
|
+
self.columns = []
|
8
|
+
|
9
|
+
def create_or_update # :nodoc:
|
10
|
+
errors.empty?
|
11
|
+
end
|
12
|
+
|
13
|
+
# Prevent AR from associating to this record by ID; we should be serialized instead.
|
14
|
+
private :quoted_id
|
15
|
+
|
16
|
+
class << self
|
17
|
+
def column(name, sql_type = nil, default = nil, null = true) # :nodoc:
|
18
|
+
columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null)
|
19
|
+
reset_column_information
|
20
|
+
end
|
21
|
+
|
22
|
+
# Do not reset @columns
|
23
|
+
def reset_column_information # :nodoc:
|
24
|
+
generated_methods.each { |name| undef_method(name) }
|
25
|
+
@column_names = @columns_hash = @content_columns = @dynamic_methods_hash = @generated_methods = nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
TinyCore::Application.name = '<%= class_name %>'
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class TinyCoreGenerator < Rails::Generator::NamedBase
|
2
|
+
def manifest
|
3
|
+
record do |m|
|
4
|
+
m.directory 'config/initializers'
|
5
|
+
m.directory File.join('lib', file_name)
|
6
|
+
|
7
|
+
m.template "application.rb", 'config/initializers/application.rb'
|
8
|
+
m.template "version.rb", File.join('lib', file_name, 'version.rb')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tiny_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Thomas Kadauke
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-30 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -28,11 +28,22 @@ extensions: []
|
|
28
28
|
extra_rdoc_files: []
|
29
29
|
|
30
30
|
files:
|
31
|
-
-
|
31
|
+
- lib/tiny_core/application.rb
|
32
32
|
- lib/tiny_core/build.rb
|
33
|
+
- lib/tiny_core/config.rb
|
34
|
+
- lib/tiny_core/core_ext/dir.rb
|
35
|
+
- lib/tiny_core/core_ext/i18n.rb
|
36
|
+
- lib/tiny_core/helpers/action_list_helper.rb
|
33
37
|
- lib/tiny_core/helpers/bread_crumb_helper.rb
|
34
38
|
- lib/tiny_core/helpers/tabs_helper.rb
|
39
|
+
- lib/tiny_core/rails_ext/attr_protection.rb
|
40
|
+
- lib/tiny_core/rails_ext/dirty_after_save.rb
|
41
|
+
- lib/tiny_core/search_filter.rb
|
42
|
+
- lib/tiny_core/tableless_model.rb
|
35
43
|
- lib/tiny_core.rb
|
44
|
+
- rails_generators/tiny_core/templates/application.rb
|
45
|
+
- rails_generators/tiny_core/templates/version.rb
|
46
|
+
- rails_generators/tiny_core/tiny_core_generator.rb
|
36
47
|
has_rdoc: true
|
37
48
|
homepage:
|
38
49
|
licenses: []
|
@@ -66,6 +77,6 @@ rubyforge_project:
|
|
66
77
|
rubygems_version: 1.3.7
|
67
78
|
signing_key:
|
68
79
|
specification_version: 3
|
69
|
-
summary:
|
80
|
+
summary: Common parts for building Tiny Applications
|
70
81
|
test_files: []
|
71
82
|
|