Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
cb366cd
Some English adjustments in README.
Dec 30, 2008
6af3a12
One small change in choice of words.
Dec 30, 2008
1ff544c
Corrected wrong statement about Innate.
Dec 30, 2008
3f30ea1
A few minor English adjustments in README.
Dec 30, 2008
43719e0
Numerous minor English corrections and adjustments.
Dec 31, 2008
dd97e52
Merge branch 'master' of git://github.com/manveru/innate
Jan 30, 2009
5470072
Merge branch 'master' of git://github.com/manveru/innate
Feb 24, 2009
2206cee
Merge branch 'master' of git://github.com/manveru/innate
Mar 9, 2009
20abb26
Merge branch 'master' of git://github.com/manveru/innate
Mar 21, 2009
6b9d33a
Merge branch 'master' of git://github.com/manveru/innate
Mar 30, 2009
318ebcc
Merge branch 'master' of git://github.com/manveru/innate
Apr 8, 2009
ffc6095
Merge branch 'master' of git@github.com:Pistos/innate
May 1, 2009
48dc150
Merge branch 'master' of git://github.com/manveru/innate
May 5, 2009
55b6c66
Merge branch 'master' of git://github.com/manveru/innate
May 5, 2009
2fa56f1
Adjusted Innate::Options#pretty_print spec to work across more system…
May 5, 2009
4a4a715
Merge branch 'master' of git@github.com:Pistos/innate
May 5, 2009
8685924
Merge branch 'master' of git://github.com/manveru/innate
May 6, 2009
d82d686
Adjusted pretty_print spec again. Made it looser, since we don't rea…
May 6, 2009
eb0aad5
Merge branch 'master' of git://github.com/manveru/innate
May 27, 2009
3af0e55
Merge branch 'master' of git@github.com:Pistos/innate
May 27, 2009
b39dea3
Merge branch 'master' of git://github.com/manveru/innate
May 28, 2009
5c32c22
Merge branch 'master' of git@github.com:Pistos/innate
May 28, 2009
b0ddecd
Merge branch 'master' of git://github.com/manveru/innate
Jul 1, 2009
9018228
Merge remote-tracking branch 'upstream/master'
Mar 13, 2025
484f133
Fix some compatibility with Ruby 3 and newer gem versions
Mar 14, 2025
d1d179b
Add Innate::YAML::Store
Mar 14, 2025
c70fc89
Fix some logic problems
Mar 14, 2025
e1a4821
Set gem dependencies properly
Mar 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion example/app/retro_games.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def index
end

def create
STORE[request[:name]] ||= 0 if request.post?
STORE[request['name']] ||= 0 if request.post?

redirect_referrer
end
Expand Down
24 changes: 12 additions & 12 deletions innate.gemspec
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
# -*- encoding: utf-8 -*-
# stub: innate 2023.01.06 ruby lib
# stub: innate 2025.03.13 ruby lib

Gem::Specification.new do |s|
s.name = "innate".freeze
s.version = "2023.01.06"
s.version = "2025.03.13"

s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
s.require_paths = ["lib".freeze]
s.authors = ["Michael 'manveru' Fellinger".freeze]
s.date = "2023-01-06"
s.date = "2025-03-13"
s.description = "Simple, straight-forward base for web-frameworks.".freeze
s.email = "m.fellinger@gmail.com".freeze
s.files = [".gems".freeze, ".gitignore".freeze, ".load_gemset".freeze, ".rvmrc".freeze, ".travis.yml".freeze, "AUTHORS".freeze, "CHANGELOG".freeze, "COPYING".freeze, "MANIFEST".freeze, "README.md".freeze, "Rakefile".freeze, "example/app/retro_games.rb".freeze, "example/app/todo/layout/default.xhtml".freeze, "example/app/todo/spec/todo.rb".freeze, "example/app/todo/start.rb".freeze, "example/app/todo/view/index.xhtml".freeze, "example/app/whywiki_erb/layout/wiki.html.erb".freeze, "example/app/whywiki_erb/spec/wiki.rb".freeze, "example/app/whywiki_erb/start.rb".freeze, "example/app/whywiki_erb/view/edit.erb".freeze, "example/app/whywiki_erb/view/index.erb".freeze, "example/custom_middleware.rb".freeze, "example/hello.rb".freeze, "example/howto_spec.rb".freeze, "example/link.rb".freeze, "example/provides.rb".freeze, "example/session.rb".freeze, "innate.gemspec".freeze, "lib/innate.rb".freeze, "lib/innate/action.rb".freeze, "lib/innate/adapter.rb".freeze, "lib/innate/cache.rb".freeze, "lib/innate/cache/api.rb".freeze, "lib/innate/cache/drb.rb".freeze, "lib/innate/cache/file_based.rb".freeze, "lib/innate/cache/marshal.rb".freeze, "lib/innate/cache/memory.rb".freeze, "lib/innate/cache/yaml.rb".freeze, "lib/innate/current.rb".freeze, "lib/innate/default_middleware.rb".freeze, "lib/innate/dynamap.rb".freeze, "lib/innate/helper.rb".freeze, "lib/innate/helper/aspect.rb".freeze, "lib/innate/helper/cgi.rb".freeze, "lib/innate/helper/flash.rb".freeze, "lib/innate/helper/link.rb".freeze, "lib/innate/helper/redirect.rb".freeze, "lib/innate/helper/render.rb".freeze, "lib/innate/log.rb".freeze, "lib/innate/log/color_formatter.rb".freeze, "lib/innate/log/hub.rb".freeze, "lib/innate/lru_hash.rb".freeze, "lib/innate/mock.rb".freeze, "lib/innate/node.rb".freeze, "lib/innate/options.rb".freeze, "lib/innate/options/dsl.rb".freeze, "lib/innate/options/stub.rb".freeze, "lib/innate/request.rb".freeze, "lib/innate/response.rb".freeze, "lib/innate/route.rb".freeze, "lib/innate/session.rb".freeze, "lib/innate/session/flash.rb".freeze, "lib/innate/spec.rb".freeze, "lib/innate/spec/bacon.rb".freeze, "lib/innate/state.rb".freeze, "lib/innate/state/accessor.rb".freeze, "lib/innate/traited.rb".freeze, "lib/innate/trinity.rb".freeze, "lib/innate/version.rb".freeze, "lib/innate/view.rb".freeze, "lib/innate/view/erb.rb".freeze, "lib/innate/view/etanni.rb".freeze, "lib/innate/view/none.rb".freeze, "spec/example/app/retro_games.rb".freeze, "spec/example/hello.rb".freeze, "spec/example/link.rb".freeze, "spec/example/provides.rb".freeze, "spec/example/session.rb".freeze, "spec/helper.rb".freeze, "spec/innate/action/layout.rb".freeze, "spec/innate/action/layout/file_layout.xhtml".freeze, "spec/innate/cache/common.rb".freeze, "spec/innate/cache/marshal.rb".freeze, "spec/innate/cache/memory.rb".freeze, "spec/innate/cache/yaml.rb".freeze, "spec/innate/dynamap.rb".freeze, "spec/innate/etanni.rb".freeze, "spec/innate/helper.rb".freeze, "spec/innate/helper/aspect.rb".freeze, "spec/innate/helper/cgi.rb".freeze, "spec/innate/helper/flash.rb".freeze, "spec/innate/helper/link.rb".freeze, "spec/innate/helper/redirect.rb".freeze, "spec/innate/helper/render.rb".freeze, "spec/innate/helper/view/aspect_hello.xhtml".freeze, "spec/innate/helper/view/locals.xhtml".freeze, "spec/innate/helper/view/loop.xhtml".freeze, "spec/innate/helper/view/num.xhtml".freeze, "spec/innate/helper/view/partial.xhtml".freeze, "spec/innate/helper/view/recursive.xhtml".freeze, "spec/innate/mock.rb".freeze, "spec/innate/modes.rb".freeze, "spec/innate/node/mapping.rb".freeze, "spec/innate/node/node.rb".freeze, "spec/innate/node/resolve.rb".freeze, "spec/innate/node/view/another_layout/another_layout.xhtml".freeze, "spec/innate/node/view/bar.xhtml".freeze, "spec/innate/node/view/cat2/cat22.xhtml".freeze, "spec/innate/node/view/cat3/cat33.xhtml".freeze, "spec/innate/node/view/foo.html.xhtml".freeze, "spec/innate/node/view/only_view.xhtml".freeze, "spec/innate/node/view/sub/baz.xhtml".freeze, "spec/innate/node/view/sub/foo/baz.xhtml".freeze, "spec/innate/node/view/with_layout.xhtml".freeze, "spec/innate/node/wrap_action_call.rb".freeze, "spec/innate/options.rb".freeze, "spec/innate/parameter.rb".freeze, "spec/innate/provides.rb".freeze, "spec/innate/provides/list.html.xhtml".freeze, "spec/innate/provides/list.txt.xhtml".freeze, "spec/innate/request.rb".freeze, "spec/innate/response.rb".freeze, "spec/innate/route.rb".freeze, "spec/innate/session.rb".freeze, "spec/innate/traited.rb".freeze, "tasks/authors.rake".freeze, "tasks/bacon.rake".freeze, "tasks/changelog.rake".freeze, "tasks/gem.rake".freeze, "tasks/gem_setup.rake".freeze, "tasks/grancher.rake".freeze, "tasks/manifest.rake".freeze, "tasks/rcov.rake".freeze, "tasks/release.rake".freeze, "tasks/reversion.rake".freeze, "tasks/setup.rake".freeze, "tasks/ycov.rake".freeze]
s.homepage = "http://github.com/manveru/innate".freeze
s.licenses = ['MIT']
s.required_ruby_version = ">= 3.0"
s.rubygems_version = "3.3.20".freeze
s.summary = "Powerful web-framework wrapper for Rack.".freeze

if s.respond_to? :specification_version then
s.specification_version = 4
end

if s.respond_to? :add_runtime_dependency then
s.add_runtime_dependency(%q<rack>.freeze, ["~> 3.0"])
s.add_development_dependency(%q<bacon>.freeze, ["~> 1.2.0"])
s.add_development_dependency(%q<rack-test>.freeze, ["~> 0.6.3"])
else
s.add_dependency(%q<rack>.freeze, ["~> 3.0"])
s.add_dependency(%q<bacon>.freeze, ["~> 1.2.0"])
s.add_dependency(%q<rack-test>.freeze, ["~> 0.6.3"])
end
s.add_runtime_dependency(%q<rack>.freeze, ["~> 3.0"])
s.add_runtime_dependency(%q<rackup>.freeze, ["~> 2.2.1"])
s.add_runtime_dependency(%q<scanf>.freeze, ["~> 1.0.0"])
s.add_runtime_dependency(%q<sorted_set>.freeze, ["~> 1.0.0"])

s.add_development_dependency(%q<bacon>.freeze, ["~> 1.2.0"])
s.add_development_dependency(%q<rack-test>.freeze, ["~> 0.6.3"])
end
8 changes: 7 additions & 1 deletion lib/innate/action.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,13 @@ def render
end

def wrap_in_layout
layout ? dup.render_in_layout(&Proc.new) : yield
if layout
dup.render_in_layout(
&Proc.new { yield }
)
else
yield
end
end

def render_in_layout
Expand Down
5 changes: 4 additions & 1 deletion lib/innate/cache/file_based.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ def cache_setup(*args)
FileUtils.mkdir_p(@dir)

@filename = File.join(@dir, @prefix + self.class::EXT)
@store = self.class::STORE.new(@filename)
@store = self.class::STORE.new(
@filename,
other_permitted_classes: [Time]
)
end

def cache_clear
Expand Down
4 changes: 2 additions & 2 deletions lib/innate/cache/yaml.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'yaml/store'
require 'innate/yaml/store'

module Innate
class Cache
Expand All @@ -12,7 +12,7 @@ class YAML
include Cache::API
include Cache::FileBased

STORE = ::YAML::Store
STORE = Innate::YAML::Store
DIR = 'innate-cache-yaml'
EXT = '.yaml'
end
Expand Down
2 changes: 2 additions & 0 deletions lib/innate/helper/aspect.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
require 'sorted_set'

module Innate
module Helper
##
Expand Down
2 changes: 2 additions & 0 deletions lib/innate/node.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
require 'sorted_set'

module Innate

# The nervous system of {Innate}, so you can relax.
Expand Down
4 changes: 2 additions & 2 deletions lib/innate/request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ def self.current
#
# Both +value+ and the elements of +keys+ will be turned into String by #to_s.
def [](value, *keys)
return super(value) if keys.empty?
[value, *keys].map{|key| super(key) }
return params[value] if keys.empty?
[value, *keys].map{|key| params[key] }
end

# the full request URI provided by Rack::Request
Expand Down
45 changes: 45 additions & 0 deletions lib/innate/yaml/store.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
require 'yaml/store'

module Innate
module YAML
# Just to allow some permitted_classes, because this list of classes
# is hard-coded in stdlib ::YAML::Store
class Store < ::YAML::Store
def initialize(*o)
@permitted_classes = [Symbol] # Default in stdlib
@use_permitted_classes = ::YAML.respond_to?(:safe_load)

if o.last.is_a? Hash
other_permitted_classes = Array(o.last[:other_permitted_classes])

if ! @use_permitted_classes && other_permitted_classes.any?
raise ArgumentError.new("::YAML module does not support permitted_classes")
else
@permitted_classes += other_permitted_classes
end
end

super(*o)
end

# Based on Ruby 3.4.2 lib/ruby/3.4.0/yaml/store.rb
def load(content)
table = if @use_permitted_classes
if Psych::VERSION >= "3.1"
::YAML.safe_load(content, permitted_classes: @permitted_classes)
else
::YAML.safe_load(content, @permitted_classes)
end
else
::YAML.load(content)
end

if table == false || table == nil
{}
else
table
end
end
end
end
end
2 changes: 1 addition & 1 deletion spec/example/app/retro_games.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
end

it 'allows you to add another game' do
response = post('/create', :name => 'Street Fighter II')
response = post('/create', 'name' => 'Street Fighter II')
response.status.should == 302

follow_redirect!
Expand Down
2 changes: 1 addition & 1 deletion spec/innate/helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class FooNodeLink
should 'construct link from ::a' do
FNL.a(:index).should == '<a href="/foo/index">index</a>'
FNL.a('index', :index, :x => :y).should == '<a href="/foo/index?x=y">index</a>'
FNL.a('duh/bar', 'duh/bar', :x => :y).should == "<a href=\"/foo/duh/bar?x=y\">duh&#x2F;bar</a>"
FNL.a('duh/bar', 'duh/bar', :x => :y).should == "<a href=\"/foo/duh/bar?x=y\">duh/bar</a>"
FNL.a('foo', :/, :x => :y).should == '<a href="/foo/?x=y">foo</a>'
end

Expand Down
4 changes: 2 additions & 2 deletions spec/innate/options.rb
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@
require 'pp'
lines = @options.pretty_inspect.split(/\n/)
lines.find_all{|l|
/:doc/ === l &&
/:value/ === l
/doc:/ === l &&
/value:/ === l
}.size.should > 3
end

Expand Down
6 changes: 3 additions & 3 deletions spec/innate/route.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,15 @@ def check(uri, status, body = nil)
Route['string'].class.should == Proc

Route['calc sum'] = lambda{|path, req|
if req[:do_calc]
lval, rval = req[:a, :b]
if req['do_calc']
lval, rval = req['a', 'b']
rval = rval.to_i * 10
"/sum/#{lval}/#{rval}"
end
}

Innate::Route('foo') do |path, req|
'/bar' if req[:bar]
'/bar' if req['bar']
end
end

Expand Down