ramaze-2012.12.08/0000755000004100000410000000000012140566653013426 5ustar www-datawww-dataramaze-2012.12.08/.mailmap0000644000004100000410000000256412140566653015056 0ustar www-datawww-dataAra T. Howard ahoward <> TJ Vanderpoel James Tucker James Tucker raggi Martin Hilbig Martin Hilbig blueonyx@dev-area.net <> Lee Jarvis Lee Jarvis Lee Jarvis injekt.me@gmail.com <> Michael Fellinger Michael Fellinger Michael Fellinger Michael Fellinger Michael Fellinger m.fellinger@gmail.com <> Yorick Peterse YorickPeterse Yorick Peterse YorickPeterse Yorick Peterse Yorick Peterse Yorick Peterse Yorick Peterse ramaze-2012.12.08/.travis.yml0000644000004100000410000000031212140566653015533 0ustar www-datawww-datalanguage: ruby script: 'rake bacon' rvm: - 1.9.2 - 1.9.3 - jruby-19mode - rbx-19mode notifications: email: - yorickpeterse@gmail.com - mf@rubyists.com branches: only: - master ramaze-2012.12.08/ramaze.gemspec0000644000004100000410000000416612140566653016261 0ustar www-datawww-datarequire File.expand_path('../lib/ramaze/version', __FILE__) path = File.expand_path('../', __FILE__) Gem::Specification.new do |s| s.name = 'ramaze' s.version = Ramaze::VERSION s.date = Time.now.strftime('%Y-%m-%d') s.authors = ['Michael \'manveru\' Fellinger', 'Yorick Peterse'] s.email = ['m.fellinger@gmail.com', 'yorickpeterse@gmail.com'] s.summary = 'Ramaze is a simple and modular web framework' s.homepage = 'http://ramaze.net/' s.description = s.summary s.required_rubygems_version = '>= 1.3.5' s.files = `cd #{path}; git ls-files`.split("\n").sort s.has_rdoc = 'yard' s.executables = ['ramaze'] s.add_dependency 'innate', '>= 2012.12' s.add_dependency 'rake' s.add_development_dependency 'Remarkably' s.add_development_dependency 'bacon' s.add_development_dependency 'dalli' s.add_development_dependency 'erector' s.add_development_dependency 'erubis' s.add_development_dependency 'ezamar' s.add_development_dependency 'haml' s.add_development_dependency 'liquid' s.add_development_dependency 'locale' s.add_development_dependency 'maruku' s.add_development_dependency 'mustache' s.add_development_dependency 'rack-contrib' s.add_development_dependency 'rack-test' s.add_development_dependency 'redis' s.add_development_dependency 'sass' s.add_development_dependency 'sequel' s.add_development_dependency 'slim' s.add_development_dependency 'slippers' s.add_development_dependency 'tagz' s.add_development_dependency 'tenjin' s.add_development_dependency 'yard' if RUBY_VERSION.to_f >= 1.9 s.add_development_dependency 'lokar' end # C extensions don't work reliably on jruby and Travis CI doesn't have them # enabled. if !RUBY_DESCRIPTION.include?('jruby') s.add_development_dependency 'localmemcache' s.add_development_dependency 'nokogiri' s.add_development_dependency 'rdiscount' s.add_development_dependency 'sqlite3' end # Nagoro doesn't seem to work on Rbx if !RUBY_DESCRIPTION.include?('rubinius') s.add_development_dependency 'nagoro' end end ramaze-2012.12.08/tasks/0000755000004100000410000000000012140566653014553 5ustar www-datawww-dataramaze-2012.12.08/tasks/authors.rake0000644000004100000410000000103712140566653017105 0ustar www-datawww-datadesc 'Update doc/AUTHORS' task :authors do authors = Hash.new(0) `git shortlog -nse`.scan(/(\d+)\s(.+)\s<(.*)>$/) do |count, name, email| authors[[name, email]] += count.to_i end File.open('guide/AUTHORS', 'w+') do |io| io.puts "Following persons have contributed to #{GEMSPEC.name}." io.puts '(Sorted by number of submitted patches, then alphabetically)' io.puts '' authors.sort_by{|(n,e),c| [-c, n.downcase] }.each do |(name, email), count| io.puts("%6d %s <%s>" % [count, name, email]) end end end ramaze-2012.12.08/tasks/todo.rake0000644000004100000410000000160112140566653016362 0ustar www-datawww-datadesc "show a todolist from all the TODO tags in the source" task :todo do yellow = "\e[33m%s\e[0m" Dir.glob('{lib,spec}/**/*.rb') do |file| lastline = todo = comment = long_comment = false File.readlines(file).each_with_index do |line, lineno| lineno += 1 comment = line =~ /^\s*?#.*?$/ long_comment = line =~ /^=begin/ long_comment = line =~ /^=end/ todo = true if line =~ /TODO|FIXME|THINK/ and (long_comment or comment) todo = false if line.gsub('#', '').strip.empty? todo = false unless comment or long_comment if todo unless lastline and lastline + 1 == lineno puts puts yellow % "#{file}#L#{lineno}" end l = line.strip.gsub(/^#\s*/, '') print ' ' unless l =~ /^-/ puts l lastline = lineno end end # File.readlines end end # task :todo ramaze-2012.12.08/tasks/changelog.rake0000644000004100000410000000125012140566653017344 0ustar www-datawww-datadesc 'update changelog' task :changelog do File.open('guide/CHANGELOG', 'w+') do |changelog| `git log -z --abbrev-commit`.split("\0").each do |commit| next if commit =~ /^Merge: \d*/ ref, author, time, _, title, _, message = commit.split("\n", 7) ref = ref[/commit ([0-9a-f]+)/, 1] author = author[/Author: (.*)/, 1].strip time = Time.parse(time[/Date: (.*)/, 1]).utc time = time.strftime('%a %b %d %H:%M:%S %Z %Y') title = title.to_s.strip changelog.puts "[#{ref} | #{time}] #{author}" changelog.puts '', " * #{title}" changelog.puts '', message.rstrip if message changelog.puts end end end ramaze-2012.12.08/tasks/yard.rake0000644000004100000410000000057312140566653016363 0ustar www-datawww-datadesc 'Generate YARD documentation of Ramaze (optionally including Innate)' task :yard, :innate do |task, args| path = File.expand_path('../../doc', __FILE__) innate = nil # Include Innate if args[:innate] and File.directory?(args[:innate]) innate = File.join(File.expand_path(args[:innate]), '**', '*') end sh("rm -rf #{path}") sh("yard doc #{innate}") end ramaze-2012.12.08/tasks/release.rake0000644000004100000410000000202412140566653017035 0ustar www-datawww-datanamespace :release do message = "Release #{GEMSPEC.version}" desc 'Releases a new version in the Git repo' task :git => [:authors, :changelog] do sh("git checkout master") sh("git add guide/AUTHORS") sh("git add guide/CHANGELOG") sh("git commit -m '#{message}' --sign") sh("git tag -a -m '#{message}' #{GEMSPEC.version}") sh("git push origin master") sh("git push origin : #{GEMSPEC.version}") end desc 'Pushes a new release to Rubygems' task :rubygems => :gem do name = "#{GEMSPEC.name}-#{GEMSPEC.version}.gem" gem = File.expand_path("../../pkg/#{name}", __FILE__) puts "About to push #{GEMSPEC.name} version #{GEMSPEC.version}" print 'Are you really sure you want to continue? y/n: ' confirmed = STDIN.gets confirmed = confirmed.strip if confirmed if !confirmed or confirmed != 'y' abort 'Aborting' end unless File.file?(gem) abort "The gem #{name} does not exist, you can build it using `rake gem`" end sh("gem push #{gem}") end end ramaze-2012.12.08/tasks/bacon.rake0000644000004100000410000000457412140566653016513 0ustar www-datawww-datadesc 'Run all bacon specs with pretty output' task :bacon do require 'open3' require 'scanf' require 'matrix' require 'pathname' specs = PROJECT_SPECS some_failed = false root_path = Pathname.new(File.expand_path('../../', __FILE__)) # Generate a hash of relative and absolute paths for all the specs. specs_relative = {} specs.each do |spec| specs_relative[spec] = Pathname.new(spec).relative_path_from(root_path).to_s end specs_size = specs.size len = specs_relative.map { |abs, rel| rel.size }.sort.last total_tests = total_assertions = total_failures = total_errors = 0 totals = Vector[0, 0, 0, 0] red, yellow, green = "\e[31m%s\e[0m", "\e[33m%s\e[0m", "\e[32m%s\e[0m" left_format = "%4d/%d: %-#{len + 11}s" spec_format = "%d specifications (%d requirements), %d failures, %d errors" load_path = File.expand_path('../../lib', __FILE__) specs.each_with_index do |spec, idx| print(left_format % [idx + 1, specs_size, specs_relative[spec]]) Open3.popen3(FileUtils::RUBY, '-I', load_path, spec) do |sin, sout, serr| out = sout.read.strip err = serr.read.strip # this is conventional if out =~ /^Bacon::Error: (needed .*)/ puts(yellow % ("%6s %s" % ['', $1])) elsif out =~ /^Spec (precondition: "[^"]*" failed)/ puts(yellow % ("%6s %s" % ['', $1])) elsif out =~ /^Spec require: "require" failed: "(no such file to load -- [^"]*)"/ puts(yellow % ("%6s %s" % ['', $1])) else total = nil out.each_line do |line| scanned = line.scanf(spec_format) next unless scanned.size == 4 total = Vector[*scanned] break end if total totals += total tests, assertions, failures, errors = total_array = total.to_a if tests > 0 && failures + errors == 0 puts((green % "%6d passed") % tests) else some_failed = true puts(red % " failed") puts out unless out.empty? puts err unless err.empty? end else some_failed = true puts(red % " failed") puts out unless out.empty? puts err unless err.empty? end end end end total_color = some_failed ? red : green puts(total_color % (spec_format % totals.to_a)) exit 1 if some_failed end ramaze-2012.12.08/tasks/gems.rake0000644000004100000410000000045512140566653016356 0ustar www-datawww-datadesc 'Updates the .gem file based on the Gemspec/Gemfile' task :gems do require 'bundler' require 'shellwords' handle = File.open(File.expand_path('../../.gems', __FILE__), 'w') Bundler.load Bundler.definition.dependencies.each do |dep| handle.puts dep.name end handle.close end ramaze-2012.12.08/examples/0000755000004100000410000000000012140566653015244 5ustar www-datawww-dataramaze-2012.12.08/examples/app/0000755000004100000410000000000012140566653016024 5ustar www-datawww-dataramaze-2012.12.08/examples/app/blog/0000755000004100000410000000000012140566653016747 5ustar www-datawww-dataramaze-2012.12.08/examples/app/blog/migrations/0000755000004100000410000000000012140566653021123 5ustar www-datawww-dataramaze-2012.12.08/examples/app/blog/migrations/01_create_schema.rb0000644000004100000410000000236612140566653024542 0ustar www-datawww-data# For more information on Sequel migrations see the following page: # http://sequel.rubyforge.org/rdoc/files/doc/migration_rdoc.html Sequel.migration do # The up() method and block is used to update a database to the current # migration. up do create_table(:users) do primary_key :id String :username, :null => false String :password, :null => false end create_table(:posts) do primary_key :id String :title, :null => false String :body , :null => false, :text => true Time :created_at Time :updated_at foreign_key :user_id, :users, :on_update => :cascade, :on_delete => :cascade, :key => :id end create_table(:comments) do primary_key :id String :username, :null => true String :comment , :null => false, :text => true Time :created_at foreign_key :post_id, :posts, :on_update => :cascade, :on_delete => :cascade, :key => :id foreign_key :user_id, :users, :on_update => :cascade, :on_delete => :cascade, :key => :id end end # The down() method and block is used to revert the changes introduced by the # up() block. down do drop_table(:comments) drop_table(:posts) drop_table(:users) end end ramaze-2012.12.08/examples/app/blog/controller/0000755000004100000410000000000012140566653021132 5ustar www-datawww-dataramaze-2012.12.08/examples/app/blog/controller/init.rb0000644000004100000410000000172712140566653022431 0ustar www-datawww-data## # Base controller that provides a few things used by sub controllers throughout # this example application. # # @since 26-09-2011 # class BaseController < Ramaze::Controller engine :etanni layout :default helper :blue_form, :user, :xhtml, :paginate # Configures the Paginate helper so that it shows a maximum of 10 posts per # page and uses the "page" query string key to determine the current page. # This will result in URLs such as /posts?page=2. Note that when calling the # paginate() method you can override these settings. trait :paginate => { :var => 'page', :limit => 10 } # Tells the User helper what model class should be used for the authenticate() # method. By default this is already set to "User" so technically this isn't # required but to make it easier to understand what's going on I decided to # put it here. trait :user_model => User end # Load all other controllers require __DIR__('posts') require __DIR__('users') ramaze-2012.12.08/examples/app/blog/controller/posts.rb0000644000004100000410000001406312140566653022633 0ustar www-datawww-data## # The Posts controller is used to display a list of all the posts that have been # added as well as providing a way of adding, removing and updating posts. # # @since 26-09-2011 # class Posts < BaseController map '/' # Sets the content type and view name based on the extension in the URL. For # example, a request to /posts/feed.rss would render the view feed.rss.xhtml # and set the content type to application/rss+xml. provide(:atom, :type => 'application/atom+xml') do |action, body| # Disable the layout. action.layout = false # Let's make sure the body is actually rendered. Using "return" would cause # a local jumper error. body end # These methods require the user to be logged in. If this isn't the case the # user will be redirected back to the previous page and a message is # displayed. before(:edit, :new, :save, :delete) do # "unless logged_in?" is the same as "if !logged_in?" but in my opinion is a # bit nicer to the eyes. unless logged_in? flash[:error] = 'You need to be logged in to view that page' # Posts.r() is a method that generates a route to a given method and a set # of parameters. Calling #to_s on this object would produce a string # containing a URL. For example, Posts.r(:edit, 10).to_s would result in # "/edit/10". redirect(Posts.r(:index)) end end ## # Shows an overview of all the posts that have been added. These posts are # paginated using the Paginate helper. # # @since 26-09-2011 # def index @posts = paginate(Post.eager(:comments, :user)) @title = 'Posts' end ## # Returns a list of all posts as either an RSS feed or an Atom feed. # # @since 27-09-2011 # def feed @posts = Post.all render_view(:feed) end ## # Shows a single post along with all it's comments. # # @since 26-09-2011 # @param [Fixnum] id The ID of the post to view. # def view(id) @post = Post[id] if @post.nil? flash[:error] = 'The specified post is invalid' redirect_referrer end @title = @post.title @created_at = @post.created_at.strftime('%Y-%m-%d') @new_comment = flash[:form_data] || Comment.new end ## # Allows users to create a new post, given the user is logged in. # # @since 26-09-2011 # def new @post = flash[:form_data] || Post.new @title = 'New post' render_view(:form) end ## # Allows a user to edit an existing blog post. # # @since 26-09-2011 # @param [Fixnum] id The ID of the blog post to edit. # def edit(id) @post = flash[:form_data] || Post[id] # Make sure the post is valid if @post.nil? flash[:error] = 'The specified post is invalid' redirect_referrer end @title = "Edit #{@post.title}" render_view(:form) end ## # Adds a new comment to an existing post and redirects the user back to the # post. # # @since 27-09-2011 # def add_comment data = request.subset(:post_id, :username, :comment) comment = Comment.new # If the user is logged in the user_id field should be set instead of the # username field. if logged_in? data.delete('username') data['user_id'] = user.id end begin comment.update(data) flash[:success] = 'The comment has been added' rescue => e Ramaze::Log.error(e) flash[:form_errors] = comment.errors flash[:error] = 'The comment could not be added' end redirect_referrer end ## # Saves the changes made by Posts#edit() and Posts#new(). While these two # methods could have their own methods for saving the data the entire process # is almost identical and thus this would be somewhat useless. # # @since 26-09-2011 # def save # Fetch the POST data to use for a new Post object or for updating an # existing one. data = request.subset(:title, :body) id = request.params['id'] data['user_id'] = user.id # If an ID is given it's assumed the user wants to edit an existing post, # otherwise a new one will be created. if !id.nil? and !id.empty? post = Post[id] # Let's make sure the post is valid if post.nil? flash[:error] = 'The specified post is invalid' redirect_referrer end success = 'The post has been updated' error = 'The post could not be updated' # Create a new post else post = Post.new success = 'The post has been created' error = 'The post could not be created' end # Now that we have a Post object and the messages to display it's time to # actually insert/update the data. This is wrapped in a begin/rescue block # so that any errors can be handled nicely. begin # Post#update() can be used for both new objects and existing ones. In # case the object doesn't exist in the database it will be automatically # created. post.update(data) flash[:success] = success # Redirect the user back to the correct page. redirect(Posts.r(:edit, post.id)) rescue => e Ramaze::Log.error(e) # Store the submitted data and the errors. The errors are used by # BlueForm, the form data is used so that the user doesn't have to # re-enter all data every time something goes wrong. flash[:form_data] = post flash[:form_errors] = post.errors flash[:error] = error redirect_referrer end end ## # Removes a single post from the database. # # @since 26-09-2011 # @param [Fixnum] id The ID of the post to remove. # def delete(id) # The call is wrapped in a begin/rescue block so any errors can be handled # properly. Without this the user would bump into a nasty stack trace and # probably would have no clue as to what's going on. begin Post.filter(:id => id).destroy flash[:success] = 'The specified post has been removed' rescue => e Ramaze::Log.error(e.message) flash[:error] = 'The specified post could not be removed' end redirect(Posts.r(:index)) end end # Posts ramaze-2012.12.08/examples/app/blog/controller/users.rb0000644000004100000410000000650512140566653022626 0ustar www-datawww-data## # The Users controller is used for managing users and allowing existing users to # log in. # # @since 26-09-2011 # class Users < BaseController map '/users' # The user has to be logged in in order to access this controller. The only # exception is the login() method. before_all do if action.method.to_sym != :login and !logged_in? flash[:error] = 'You need to be logged in to view that page' redirect(Users.r(:login)) end end ## # Shows an overview of all the users that have been added to the database. # # @since 27-09-2011 # def index @users = paginate(User) @title = 'Users' end ## # Allows users to add another user to the database. # # @since 27-09-2011 # def new @user = flash[:form_data] || User.new @title = 'New user' render_view(:form) end ## # Edits an existing user. If the specified user ID is invalid the user is # redirected back to the previous page. # # @since 27-09-2011 # @param [Fixnum] id The ID of the user to edit. # def edit(id) @user = flash[:form_data] || User[id] if @user.nil? flash[:error] = 'The specified user is invalid' redirect_referrer end @title = "Edit #{@user.username}" render_view(:form) end ## # Saves the changes made by Users#new() and Users#edit(). Just like # Posts#save() this method is used for both methods since the actions required # for adding/updating the data is pretty much identical. # # @since 27-09-2011 # def save data = request.subset(:username, :password) id = request.params['id'] if !id.nil? and !id.empty? user = User[id] if user.nil? flash[:error] = 'The specified user is invalid' redirect_referrer end success = 'The user has been updated' error = 'The user could not be updated' else user = User.new success = 'The user has been added' error = 'The user could not be added' end begin user.update(data) flash[:success] = success redirect(Users.r(:edit, user.id)) rescue => e Ramaze::Log.error(e) flash[:error] = error flash[:form_errors] = user.errors flash[:form_data] = user redirect_referrer end end ## # Deletes a single user and redirects the user back to the overview. # # @since 27-09-2011 # @param [Fixnum] id The ID of the user to delete. # def delete(id) begin User.filter(:id => id).destroy flash[:success] = 'The specified user has been removed' rescue => e Ramaze::Log.error(e) flash[:error] = 'The specified user could not be removed' end redirect_referrer end ## # Allows a user to log in. Once logged in the user is able to manage existing # users and edit posts. # # @since 27-09-2011 # def login if request.post? if user_login(request.subset('username', 'password')) flash[:success] = 'You have been logged in' redirect(Posts.r(:index)) else flash[:error] = 'You could not be logged in' end end @title = 'Login' end ## # Logs the user out and destroys the session. # # @since 27-09-2011 # def logout user_logout session.clear flash[:success] = 'You have been logged out' redirect(Users.r(:login)) end end # Users ramaze-2012.12.08/examples/app/blog/model/0000755000004100000410000000000012140566653020047 5ustar www-datawww-dataramaze-2012.12.08/examples/app/blog/model/post.rb0000644000004100000410000000223212140566653021360 0ustar www-datawww-data## # The Post class is a model that's used for managing posts. The corresponding # table is called "posts". For more information on how Sequel works see the # following page: http://sequel.rubyforge.org/documentation.html # # @since 26-09-2011 # class Post < Sequel::Model # The timestamps plugin is used to automatically fill two database columns # with the dates and times on which an object was created and when it was # modified. plugin :timestamps, :create => :created_at, :update => :updated_at # Multiple posts can only belong to a single user. many_to_one :user one_to_many :comments ## # Post#validate() is called whenever an instance of this class is saved or # updated. For more information on what you can do with this method see the # following page: # http://sequel.rubyforge.org/rdoc/files/doc/validations_rdoc.html # # If you're used to working with ActiveRecord it's important to remember that # these validation methods can't be used in a model's class declaration, they # have to be placed inside the #validate() method. # # @since 26-09-2011 # def validate validates_presence([:title, :body]) end end # Post ramaze-2012.12.08/examples/app/blog/model/init.rb0000644000004100000410000000271012140566653021337 0ustar www-datawww-data# Configure Sequel. This example uses a SQLite3 database with it's encoding set # to UTF-8. The :test option is used to confirm that the database connection is # valid before it's actually being used. In this case the connection returned by # Sequel.connect is stored in a constant called "DB" but you're free to store it # wherever you want. DB = Sequel.connect( :adapter => 'sqlite', :database => __DIR__('../database.db'), :test => true, :encoding => 'utf8' ) # The validation_helpers plugin is required if you want to use the #validate() # method in your model in combination with easy to use methods such as # validates_presence(). Sequel::Model.plugin(:validation_helpers) # The migration extension is needed in order to run migrations. Sequel.extension(:migration) # The pagination extension is needed by Ramaze::Helper::Paginate. Sequel.extension(:pagination) # Migrate the database Sequel::Migrator.run(DB, __DIR__('../migrations')) # Time to load all the models now that Sequel is set up. require __DIR__('comment') require __DIR__('post') require __DIR__('user') # Insert the default user if this hasn't already been done so. unless User[:username => 'admin'] User.create(:username => 'admin', :password => 'admin') end # Insert a default post if no posts have been added. if Post.all.empty? Post.create( :title => 'Example Post', :body => 'This is a post that uses Markdown!', :user_id => User[:username => 'admin'].id ) end ramaze-2012.12.08/examples/app/blog/model/comment.rb0000644000004100000410000000157612140566653022047 0ustar www-datawww-data## # The Comment model is used for creating and managing comments. # # @since 26-09-2011 # class Comment < Sequel::Model plugin :timestamps, :create => :created_at, :update => :updated_at # A comment can belong to only one post and one user many_to_one :post many_to_one :user ## # Validates a comment before saving it to the database. # # @since 26-09-2011 # def validate validates_presence(:comment) # Comments can either have user ID or a custom name. The user ID is only set # when the user is logged in. unless self.user_id validates_presence(:username) end end ## # Gets the name of the author from either an associated user or the "name" # field. # # @since 26-09-2011 # @return [String] # def username if user and user.username return user.username else return super end end end # Comment ramaze-2012.12.08/examples/app/blog/model/user.rb0000644000004100000410000000604412140566653021356 0ustar www-datawww-data## # The User model is user for retrieving and authenticating users. This # application uses bcrypt to hash the passwords. For more information on bcrypt # see the following pages: # # * http://codahale.com/how-to-safely-store-a-password/ # * http://yorickpeterse.com/articles/use-bcrypt-fool/ # * https://github.com/codahale/bcrypt-ruby # # @since 26-09-2011 # class User < Sequel::Model # A user can have any number of posts and comments. one_to_many :posts one_to_many :comments ## # User.authenticate() is used to authenticate a user. Each request the User # helper calls this method to see if the currently logged in user is a valid # user. Once called this methods queries the database and returns a valid User # object in case the specified details were correct or something that # evaluates to false if this wasn't the case. # # @since 26-09-2011 # @param [Hash] creds A hash containing the username and password of the # currently logged in user. # @return [Users|FalseClass] # def self.authenticate(creds) username, password = creds['username'], creds['password'] if creds['username'].nil? or creds['username'].empty? return false end # Let's see if there is a user for the given username. user = self[:username => username] # Validate the user. Note that while it may seem that the password is # compared as plain text this is not the case. The bcrypt class # automatically converts the given password to a bcrypt hash. If these # hashes are the same the specified password is correct. if !user.nil? and user.password == password return user else return false end end ## # In order to properly use bcrypt we have to override the password=() and # password() methods to return a correct bcrypt hash/object rather than # whatever was stored in the database as a String instance. # # @since 26-09-2011 # @param [String] password The new password of a user. # def password=(password) # Passing an empty password to the BCrypt class triggers errors. if password.nil? or password.empty? return end # Generates a new bcrypt password using a cost of 10. In my opinion a cost # higher than 10 makes a web based application too slow. password = BCrypt::Password.create(password, :cost => 10) super(password) end ## # Because the password=() is overwritten with a custom one we also have to # define a matching getter. Without this you'd get an instance of String # containing the bcrypt hash and thus wouldn't be able to properly compare it # to other passwords. # # @since 26-09-2011 # @return [BCrypt::Password|NilClass] # def password password = super if !password.nil? return BCrypt::Password.new(password) else return nil end end ## # Validates an instance of this model. See Post#validate() for some extra # details on how this works. # # @since 26-09-2011 # def validate validates_presence(:username) validates_presence(:password) if new? end end # User ramaze-2012.12.08/examples/app/blog/app.rb0000644000004100000410000000135612140566653020061 0ustar www-datawww-data# This file contains your application, it requires dependencies and necessary # parts of the application. # # It will be required from either `config.ru` or `start.rb` require 'rubygems' require 'ramaze' require 'sequel' require 'sqlite3' require 'bcrypt' require 'rdiscount' # Make sure that Ramaze knows where you are. Without this layouts and such # wouldn't be rendered. While Ramaze.options.roots includes "." (the current # directory) you should not rely on this path as it changes depending from what # directory this script was called. Ramaze.options.roots = [__DIR__] # Initialize controllers and models require __DIR__('model/init') require __DIR__('controller/init') Ramaze::Log.info('Logging in can be done by going to /users/login') ramaze-2012.12.08/examples/app/blog/start.rb0000644000004100000410000000110012140566653020421 0ustar www-datawww-data#!/usr/bin/env ruby # Use this file directly like `ruby start.rb` if you don't want to use the # `ramaze start` command. # # All application related things should go into `app.rb`, this file is simply # for options related to running the application locally. # # You can run this file as following: # # $ ruby start.rb # $ ./start.rb # # If you want to be able to do the latter you'll have to make sure the file can be # executed: # # $ chmod +x ./start.rb require File.expand_path('../app', __FILE__) Ramaze.start(:adapter => :webrick, :port => 7000, :file => __FILE__) ramaze-2012.12.08/examples/app/blog/public/0000755000004100000410000000000012140566653020225 5ustar www-datawww-dataramaze-2012.12.08/examples/app/blog/public/css/0000755000004100000410000000000012140566653021015 5ustar www-datawww-dataramaze-2012.12.08/examples/app/blog/public/css/reset.css0000644000004100000410000000432412140566653022654 0ustar www-datawww-data@charset "UTF-8"; /** * http://meyerweb.com/eric/tools/css/reset/ * v2.0 | 20110126 * License: none (public domain) */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { border: 0; font-size: 100%; font: inherit; margin: 0; padding: 0; vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body { line-height: 1.3; } ol, ul, ol li, ul li { list-style-type: none; margin: 0px; padding: 0px; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { /** * Instead of "collapse" I'm using "separate" as that allows me to give table cells * a border without having to go through a lot of trouble */ border-collapse: separate; border-spacing: 0; width: 100%; } table th { font-weight: bold; } pre, code { font-size: 13px; font-family: monospace; } /** * These form elements usually don't trigger any special cursor and thus can confuse * users when these elements have custom styles (e.g. a background image). */ input[type="submit"], input[type="button"], input[type="checkbox"], input[type="radio"], button, select { cursor: pointer; } *[disabled], *[disabled="disabled"] { cursor: not-allowed; } textarea { overflow: auto; } acronym, abbr { cursor: help; } /* Some typography related styles */ body { font-size: 16px; } h1, h2, h3, h4, h5, h6 { font-weight: bold; } a:hover, a:active { outline: none; } strong { font-weight: bold; } small { font-size: 11px; } ramaze-2012.12.08/examples/app/blog/public/css/text.css0000644000004100000410000000214412140566653022514 0ustar www-datawww-data/** * Stylesheet used for styling headings, links, etc. * * @author Yorick Peterse * @link http://yorickpeterse.com/ */ body { background: url('../images/bg.png') repeat top left; border-top: 5px solid #444; color: #444; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, sans-serif; font-size: 14px; } p { font-size: 14px; line-height: 22px; margin-bottom: 20px; } a { color: #444; } ol { margin-left: 20px; } ol li { list-style-type: decimal; } ul { margin-left: 18px; } ul li { list-style-type: disc; } ul, ol { line-height: 22px; margin-bottom: 20px; } a:hover, h1 a:hover { color: #E33F1E; } h1, h2, h3, h4, h5, h6 { font-weight: bold; margin-bottom: 5px; } h1 { font-size: 28px; } h2 { font-size: 24px; } h3 { font-size: 22px; } h4 { font-size: 20px; } h5 { font-size: 18px; } h6 { font-size: 16px; } h1 a { color: #444; text-decoration: none; } pre { margin: 20px 0px; } code { background: #eee; } ramaze-2012.12.08/examples/app/blog/public/css/grid.css0000644000004100000410000000245212140566653022457 0ustar www-datawww-data@charset "UTF-8"; /** * Modified version of the CSS grid (aka 1140 CSS) that can be found at http://cssgrid.net * * This modified version has some extra enhancements to make it a bit easier to work with * the grid. Along with these minor fixes I also renamed all grid classes to the names * used by the 960 grid system as I find "grid_6" easier to write than "sixcol". */ .container { overflow: hidden; padding-left: 1%; padding-right: 1%; } .row { max-width: 96%; margin: 0 auto; overflow: hidden; width: 100%; } .grid_1, .grid_2, .grid_3, .grid_4, .grid_5, .grid_6, .grid_7, .grid_8, .grid_9, .grid_10, .grid_11 { float: left; margin-right: 3.8%; min-height: 1px; } .row .grid_1 { width: 4.85%; } .row .grid_2 { width: 13.45%; } .row .grid_3 { width: 22.05%; } .row .grid_4 { width: 30.75%; } .row .grid_5 { width: 39.45%; } .row .grid_6 { width: 48%; } .row .grid_7 { width: 56.75%; } .row .grid_8 { width: 65.4%; } .row .grid_9 { width: 74.05%; } .row .grid_10 { width: 82.7%; } .row .grid_11 { width: 91.35%; } .row .grid_12 { float: left; width: 100%; } .last, .row > *:last-child { margin-right: 0px; } img, object, embed { max-width: 100%; } img { height: auto; } ramaze-2012.12.08/examples/app/blog/public/css/layout.css0000644000004100000410000000625012140566653023047 0ustar www-datawww-data/** * Stylesheet used for the layout of most elements. * * @author Yorick Peterse * @link http://yorickpeterse.com/ */ #container { margin: 20px auto; width: 940px; } #content { background: #fff; border: 1px solid #ddd; padding: 20px; width: 898px; } /* Top part of the website, contains the title and the navigation menu */ #top { background: #E33F1E; height: 70px; margin-bottom: 20px; padding: 0px 10px; } #top header h1 { color: #fff; font-size: 38px; margin: 10px 0px 0px 0px; padding: 0px; } #top nav ul { float: right; margin-right: 15px; } #top nav ul li { float: left; font-size: 16px; list-style-type: none; margin-right: 10px; } #top nav ul li:last-child { margin-right: 0px; } #top nav ul li a { color: #fff; display: block; height: 45px; padding: 25px 10px 0px 10px; text-decoration: none; } #top nav ul li a:hover { background: #D43919; } /* Footer at the bottom of the page */ #footer { text-align: center; } #footer p { font-size: 13px; margin-bottom: 10px; } form label { display: block; } form label span.error { color: #E33F1E; } form input[type="text"], form textarea, form input[type="password"] { border: 1px solid #ccc; font-size: 14px; padding: 5px; width: 300px; } form textarea { width: auto; } form input[type="submit"] { background: #fff; border: 1px solid #ccc; font-size: 14px; padding: 3px 5px; } form input[type="submit"]:hover { background: #eee; } /* Comments */ #comments > h1 { margin-bottom: 10px; } #comments article header h1 { font-size: 16px; } #comments article header .meta { margin-bottom: 10px; } /* Notifications */ .message { margin-bottom: 20px; text-align: center; } .message p { margin-bottom: 0px; padding: 5px; } .message.success { background: #DAEDA6; color: #000; } .message.error { background: #E33F1E; color: #fff; } /* Pagination system */ .pager span { display: none; } .pager a { border: 1px solid #ccc; display: inline-block; margin-right: 8px; min-width: 20px; padding: 5px; text-decoration: none; text-align: center; } .pager a:hover, .pager a.current { background: #eee; color: #000; } table { margin-bottom: 10px; text-align: left; } table thead tr th { border-bottom: 2px solid #ccc!important; } table thead tr th, table tbody tr td { border-bottom: 1px solid #ccc; padding: 8px 3px; } table tbody tr:last-child td { border-bottom: none; } ramaze-2012.12.08/examples/app/blog/public/favicon.ico0000644000004100000410000000217612140566653022354 0ustar www-datawww-data h(    ϳ__ccc ```MMMMMM?..`````MMMMMMMMM--ollloOOOMMMMMMMMMMMMUUUMMMMMMMMMMMM??RRRMMMMMMMMMMMM?--?@@IIYMMMMMMMMMMMM 00MMMMMM_ گ گ99y/?o?2ramaze-2012.12.08/examples/app/blog/public/images/0000755000004100000410000000000012140566653021472 5ustar www-datawww-dataramaze-2012.12.08/examples/app/blog/public/images/bg.png0000644000004100000410000000017712140566653022575 0ustar www-datawww-dataPNG  IHDR/nLtEXtSoftwareAdobe ImageReadyqe<PLTEaIDATxb`d'IENDB`ramaze-2012.12.08/examples/app/blog/public/dispatch.fcgi0000644000004100000410000000041612140566653022657 0ustar www-datawww-data#!/usr/bin/env ruby require 'rubygems' require 'ramaze' # FCGI doesn't like you writing to stdout Ramaze::Log.loggers = [ Ramaze::Logger::Informer.new( __DIR__("../ramaze.fcgi.log") ) ] Ramaze.options.adapter.handler = :fastcgi $0 = __DIR__("../start.rb") require $0 ramaze-2012.12.08/examples/app/blog/public/.htaccess0000644000004100000410000000121512140566653022022 0ustar www-datawww-data# General Apache options Options +FollowSymLinks +ExecCGI AddHandler cgi-script cgi rb AddHandler fastcgi-script fcgi AddHandler fcgid-script fcgi # Redirect all requests not available on the filesystem to Ramaze. RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] # In case Ramaze experiences terminal errors. # Instead of displaying this message you can supply a # file here which will be rendered instead. # # Example: # ErrorDocument 500 /500.html ErrorDocument 500 "

Application error

Ramaze failed to start properly" ramaze-2012.12.08/examples/app/blog/config.ru0000755000004100000410000000127512140566653020574 0ustar www-datawww-data#!/usr/bin/env rackup # # config.ru for ramaze apps # # Rackup is a useful tool for running Rack applications, which uses the # Rack::Builder DSL to configure middleware and build up applications easily. # # Rackup automatically figures out the environment it is run in, and runs your # application as FastCGI, CGI, or standalone with Mongrel or WEBrick -- all from # the same configuration. # # Do not set the adapter.handler in here, it will be ignored. # You can choose the adapter like `ramaze start -s mongrel` or set it in the # 'start.rb' and use `ruby start.rb` instead. require ::File.expand_path('../app', __FILE__) Ramaze.start(:root => Ramaze.options.roots, :started => true) run Ramaze ramaze-2012.12.08/examples/app/blog/view/0000755000004100000410000000000012140566653017721 5ustar www-datawww-dataramaze-2012.12.08/examples/app/blog/view/feed.xhtml0000644000004100000410000000140112140566653021676 0ustar www-datawww-data tag:ramaze-blog Ramaze Blog #{@posts.last.created_at.strftime('%Y-%m-%dT%H:%M:%SZ')} tag:ramaze-blog,#{post.id} #{post.title} #{post.user.username} #{post.created_at.strftime('%Y-%m-%dT%H:%M:%SZ')}
#{RDiscount.new(post.body).to_html}
ramaze-2012.12.08/examples/app/blog/view/form.xhtml0000644000004100000410000000041612140566653021743 0ustar www-datawww-data#{form_for(@post, :method => :post, :action => Posts.r(:save)) do |f| f.input_hidden(:id) f.input_text('Title', :title) f.g.p('You can use Markdown when writing your post.') f.textarea('Body', :body, :rows => 15, :cols => 70) f.input_submit('Submit') end} ramaze-2012.12.08/examples/app/blog/view/users/0000755000004100000410000000000012140566653021062 5ustar www-datawww-dataramaze-2012.12.08/examples/app/blog/view/users/form.xhtml0000644000004100000410000000066012140566653023105 0ustar www-datawww-data#{form_for(@user, :method => :post, :action => Users.r(:save)) do |f| f.input_hidden(:id) f.input_text('Username', :username) # Not setting an empty value for the password field would display the hash. # Note that setting it to nil wouldn't work as the BlueForm helper would still # try to extract the value from the @user object. f.input_password('Password', :password, :value => '') f.input_submit('Submit') end} ramaze-2012.12.08/examples/app/blog/view/users/login.xhtml0000644000004100000410000000036712140566653023256 0ustar www-datawww-data

The default username and password combination is "admin".

#{form_for(nil, :method => :post, :action => Users.r(:login)) do |f| f.input_text('Username', :username) f.input_password('Password', :password) f.input_submit('Login') end} ramaze-2012.12.08/examples/app/blog/view/users/index.xhtml0000644000004100000410000000106512140566653023251 0ustar www-datawww-data
Username Actions
#{Users.a(user.username, :edit, user.id)} #{Users.a('Delete', :delete, user.id)}
#{if @users.respond_to?(:navigation) and @users.page_count > 1 @users.navigation end}

No users were found.

#{Users.a('New User', :new)}

ramaze-2012.12.08/examples/app/blog/view/view.xhtml0000644000004100000410000000265512140566653021761 0ustar www-datawww-data

#{@post.title}

Created at and written by #{@post.user.username}

#{RDiscount.new(@post.body).to_html}

#{Posts.a('Edit', :edit, @post.id)} | #{Posts.a('Delete', :delete, @post.id)}

Comments

#{comment.username}

#{comment.comment}

No comments have been added yet.

Add Comment

#{form_for( @new_comment, :method => :post, :action => Posts.r(:add_comment) ) do |f| f.input_hidden(:post_id, @post.id) unless logged_in? f.input_text('Username', :username) end f.textarea('Comment', :comment, :rows => 7, :cols => 60) f.input_submit('Submit') end}
ramaze-2012.12.08/examples/app/blog/view/index.xhtml0000644000004100000410000000156712140566653022117 0ustar www-datawww-data

#{Posts.a(post.title, :view, post.id)}

Created at and written by #{post.user.username}

#{RDiscount.new(post.body).to_html}

#{post.comments.length} comment(s) | #{Posts.a('Edit', :edit, post.id)} | #{Posts.a('Delete', :delete, post.id)}

#{if @posts.respond_to?(:navigation) and @posts.page_count > 1 @posts.navigation end}

No posts were found.

#{Posts.a('New Post', :new)}

ramaze-2012.12.08/examples/app/blog/layout/0000755000004100000410000000000012140566653020264 5ustar www-datawww-dataramaze-2012.12.08/examples/app/blog/layout/default.xhtml0000644000004100000410000000330612140566653022770 0ustar www-datawww-data #{@title} #{css('reset')} #{css('grid')} #{css('layout')} #{css('text')}

#{@title}

#{flash[type]}

#{@content}

Ramaze is free software and is licensed under the Ruby license.

ramaze-2012.12.08/examples/app/chat/0000755000004100000410000000000012140566653016743 5ustar www-datawww-dataramaze-2012.12.08/examples/app/chat/model/0000755000004100000410000000000012140566653020043 5ustar www-datawww-dataramaze-2012.12.08/examples/app/chat/model/history.rb0000644000004100000410000000127212140566653022073 0ustar www-datawww-datarequire 'ramaze/gestalt' class History def initialize(size = 13) @size = size @history = [] end def write(nick, text) text.strip! return if text.empty? @history.shift until @history.size < @size @history << Message.new(nick, text, Time.now) true end def to_html g = Ramaze::Gestalt.new each do |message| g.div(:class => :message) do g.span(:class => :time){ message[:time].strftime('%X') } g.span(:class => :nick){ message[:nick] } g.span(:class => :text){ message[:text] } end end g.to_s end include Enumerable def each @history.sort.each do |message| yield message end end end ramaze-2012.12.08/examples/app/chat/model/message.rb0000644000004100000410000000017112140566653022013 0ustar www-datawww-dataclass Message < Struct.new(:nick, :text, :time) include Comparable def <=>(other) time <=> other.time end end ramaze-2012.12.08/examples/app/chat/start.rb0000644000004100000410000000134512140566653020430 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' require __DIR__ 'model/history' require __DIR__ 'model/message' class ChatRoom < Ramaze::Controller map '/' HISTORY = History.new [ "Hello, World!", "My name is manveru", "I welcome you to my realm", "The unique and most awesome examples/chat.rb!", ].each{|text| HISTORY.write('manveru', text) } layout :default def index return unless request.post? session[:nick] = h(request[:nick]) redirect r(:chat) end def chat redirect r(:/) unless session[:nick] end def say nick, text = session[:nick], request[:text] HISTORY.write(nick, h(text)) if nick and text end def listen respond HISTORY.to_html end end Ramaze.start :mode => :live ramaze-2012.12.08/examples/app/chat/public/0000755000004100000410000000000012140566653020221 5ustar www-datawww-dataramaze-2012.12.08/examples/app/chat/public/css/0000755000004100000410000000000012140566653021011 5ustar www-datawww-dataramaze-2012.12.08/examples/app/chat/public/css/chat.css0000644000004100000410000000063012140566653022441 0ustar www-datawww-data#login { margin: auto; padding: 10em; width: 300px; } #main { height: 300px; overflow: auto; font-family: monospace; } #main .time { margin-right: 0.5em; } #main .time:before { content:"["; color: #ccc; } #main .time:after { content:"]"; color: #ccc; } #main .nick { margin-right: 1em; } #main .nick:before { content:"<"; color: #ccc; } #main .nick:after { content:">"; color: #ccc; } #talk { width: 100%; } ramaze-2012.12.08/examples/app/chat/public/js/0000755000004100000410000000000012140566653020635 5ustar www-datawww-dataramaze-2012.12.08/examples/app/chat/public/js/jquery.js0000644000004100000410000027653112140566653022530 0ustar www-datawww-data(function(){ /* * jQuery 1.2.4a - New Wave Javascript * * Copyright (c) 2008 John Resig (jquery.com) * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * * $Date: 2008-04-09 21:17:07 -0400 (Wed, 09 Apr 2008) $ * $Rev: 5225 $ */ // Map over jQuery in case of overwrite if ( window.jQuery ) var _jQuery = window.jQuery; var jQuery = window.jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.prototype.init( selector, context ); }; // Map over the $ in case of overwrite if ( window.$ ) var _$ = window.$; // Map the jQuery namespace to the '$' one window.$ = jQuery; // A simple way to check for HTML strings or ID strings // (both of which we optimize for) var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; // Is it a simple selector var isSimple = /^.[^:#\[\.]*$/; jQuery.fn = jQuery.prototype = { init: function( selector, context ) { // Make sure that a selection was provided selector = selector || document; // Handle $(DOMElement) if ( selector.nodeType ) { this[0] = selector; this.length = 1; return this; // Handle HTML strings } else if ( typeof selector == "string" ) { // Are we dealing with HTML string or an ID? var match = quickExpr.exec( selector ); // Verify a match, and that no context was specified for #id if ( match && (match[1] || !context) ) { // HANDLE: $(html) -> $(array) if ( match[1] ) selector = jQuery.clean( [ match[1] ], context ); // HANDLE: $("#id") else { var elem = document.getElementById( match[3] ); // Make sure an element was located if ( elem ) // Handle the case where IE and Opera return items // by name instead of ID if ( elem.id != match[3] ) return jQuery().find( selector ); // Otherwise, we inject the element directly into the jQuery object else { this[0] = elem; this.length = 1; return this; } else selector = []; } // HANDLE: $(expr, [context]) // (which is just equivalent to: $(content).find(expr) } else return new jQuery( context ).find( selector ); // HANDLE: $(function) // Shortcut for document ready } else if ( jQuery.isFunction( selector ) ) return new jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector ); return this.setArray( // HANDLE: $(array) selector.constructor == Array && selector || // HANDLE: $(arraylike) // Watch for when an array-like object, contains DOM nodes, is passed in as the selector (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) || // HANDLE: $(*) [ selector ] ); }, // The current version of jQuery being used jquery: "1.2.4a", // The number of elements contained in the matched element set size: function() { return this.length; }, // The number of elements contained in the matched element set length: 0, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { return num == undefined ? // Return a 'clean' array jQuery.makeArray( this ) : // Return just the object this[ num ]; }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function( elems ) { // Build a new jQuery matched element set var ret = jQuery( elems ); // Add the old object onto the stack (as a reference) ret.prevObject = this; // Return the newly-formed element set return ret; }, // Force the current matched set of elements to become // the specified array of elements (destroying the stack in the process) // You should use pushStack() in order to do this, but maintain the stack setArray: function( elems ) { // Resetting the length to 0, then using the native Array push // is a super-fast way to populate an object with array-like properties this.length = 0; Array.prototype.push.apply( this, elems ); return this; }, // Execute a callback for every element in the matched set. // (You can seed the arguments with an array of args, but this is // only used internally.) each: function( callback, args ) { return jQuery.each( this, callback, args ); }, // Determine the position of an element within // the matched set of elements index: function( elem ) { var ret = -1; // Locate the position of the desired element this.each(function(i){ if ( this == elem ) ret = i; }); return ret; }, attr: function( name, value, type ) { var options = name; // Look for the case where we're accessing a style value if ( name.constructor == String ) if ( value == undefined ) return this.length && jQuery[ type || "attr" ]( this[0], name ) || undefined; else { options = {}; options[ name ] = value; } // Check to see if we're setting style values return this.each(function(i){ // Set all the styles for ( name in options ) jQuery.attr( type ? this.style : this, name, jQuery.prop( this, options[ name ], type, i, name ) ); }); }, css: function( key, value ) { // ignore negative width and height values if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) value = undefined; return this.attr( key, value, "curCSS" ); }, text: function( text ) { if ( typeof text != "object" && text != null ) return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); var ret = ""; jQuery.each( text || this, function(){ jQuery.each( this.childNodes, function(){ if ( this.nodeType != 8 ) ret += this.nodeType != 1 ? this.nodeValue : jQuery.fn.text( [ this ] ); }); }); return ret; }, wrapAll: function( html ) { if ( this[0] ) // The elements to wrap the target around jQuery( html, this[0].ownerDocument ) .clone() .insertBefore( this[0] ) .map(function(){ var elem = this; while ( elem.firstChild ) elem = elem.firstChild; return elem; }) .append(this); return this; }, wrapInner: function( html ) { return this.each(function(){ jQuery( this ).contents().wrapAll( html ); }); }, wrap: function( html ) { return this.each(function(){ jQuery( this ).wrapAll( html ); }); }, append: function() { return this.domManip(arguments, true, false, function(elem){ if (this.nodeType == 1) this.appendChild( elem ); }); }, prepend: function() { return this.domManip(arguments, true, true, function(elem){ if (this.nodeType == 1) this.insertBefore( elem, this.firstChild ); }); }, before: function() { return this.domManip(arguments, false, false, function(elem){ this.parentNode.insertBefore( elem, this ); }); }, after: function() { return this.domManip(arguments, false, true, function(elem){ this.parentNode.insertBefore( elem, this.nextSibling ); }); }, end: function() { return this.prevObject || jQuery( [] ); }, find: function( selector ) { var elems = jQuery.map(this, function(elem){ return jQuery.find( selector, elem ); }); return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ? jQuery.unique( elems ) : elems ); }, clone: function( events ) { // Do the clone var ret = this.map(function(){ if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) { // IE copies events bound via attachEvent when // using cloneNode. Calling detachEvent on the // clone will also remove the events from the orignal // In order to get around this, we use innerHTML. // Unfortunately, this means some modifications to // attributes in IE that are actually only stored // as properties will not be copied (such as the // the name attribute on an input). var clone = this.cloneNode(true), container = document.createElement("div"); container.appendChild(clone); return jQuery.clean([container.innerHTML])[0]; } else return this.cloneNode(true); }); // Need to set the expando to null on the cloned set if it exists // removeData doesn't work here, IE removes it from the original as well // this is primarily for IE but the data expando shouldn't be copied over in any browser var clone = ret.find("*").andSelf().each(function(){ if ( this[ expando ] != undefined ) this[ expando ] = null; }); // Copy the events from the original to the clone if ( events === true ) this.find("*").andSelf().each(function(i){ if (this.nodeType == 3) return; var events = jQuery.data( this, "events" ); for ( var type in events ) for ( var handler in events[ type ] ) jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data ); }); // Return the cloned set return ret; }, filter: function( selector ) { return this.pushStack( jQuery.isFunction( selector ) && jQuery.grep(this, function(elem, i){ return selector.call( elem, i ); }) || jQuery.multiFilter( selector, this ) ); }, not: function( selector ) { if ( selector.constructor == String ) // test special case where just one selector is passed in if ( isSimple.test( selector ) ) return this.pushStack( jQuery.multiFilter( selector, this, true ) ); else selector = jQuery.multiFilter( selector, this ); var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; return this.filter(function() { return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; }); }, add: function( selector ) { return !selector ? this : this.pushStack( jQuery.merge( this.get(), selector.constructor == String ? jQuery( selector ).get() : selector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, "form")) ? selector : [selector] ) ); }, is: function( selector ) { return selector ? jQuery.multiFilter( selector, this ).length > 0 : false; }, hasClass: function( selector ) { return this.is( "." + selector ); }, val: function( value ) { if ( value == undefined ) { if ( this.length ) { var elem = this[0]; // We need to handle select boxes special if ( jQuery.nodeName( elem, "select" ) ) { var index = elem.selectedIndex, values = [], options = elem.options, one = elem.type == "select-one"; // Nothing was selected if ( index < 0 ) return null; // Loop through all the selected options for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { var option = options[ i ]; if ( option.selected ) { // Get the specifc value for the option value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value; // We don't need an array for one selects if ( one ) return value; // Multi-Selects return an array values.push( value ); } } return values; // Everything else, we just grab the value } else return (this[0].value || "").replace(/\r/g, ""); } return undefined; } return this.each(function(){ if ( this.nodeType != 1 ) return; if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) this.checked = (jQuery.inArray(this.value, value) >= 0 || jQuery.inArray(this.name, value) >= 0); else if ( jQuery.nodeName( this, "select" ) ) { var values = value.constructor == Array ? value : [ value ]; jQuery( "option", this ).each(function(){ this.selected = (jQuery.inArray( this.value, values ) >= 0 || jQuery.inArray( this.text, values ) >= 0); }); if ( !values.length ) this.selectedIndex = -1; } else this.value = value; }); }, html: function( value ) { return value == undefined ? (this.length ? this[0].innerHTML : null) : this.empty().append( value ); }, replaceWith: function( value ) { return this.after( value ).remove(); }, eq: function( i ) { return this.slice( i, i + 1 ); }, slice: function() { return this.pushStack( Array.prototype.slice.apply( this, arguments ) ); }, map: function( callback ) { return this.pushStack( jQuery.map(this, function(elem, i){ return callback.call( elem, i, elem ); })); }, andSelf: function() { return this.add( this.prevObject ); }, data: function( key, value ){ var parts = key.split("."); parts[1] = parts[1] ? "." + parts[1] : ""; if ( value == null ) { var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); if ( data == undefined && this.length ) data = jQuery.data( this[0], key ); return data == null && parts[1] ? this.data( parts[0] ) : data; } else return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ jQuery.data( this, key, value ); }); }, removeData: function( key ){ return this.each(function(){ jQuery.removeData( this, key ); }); }, domManip: function( args, table, reverse, callback ) { var clone = this.length > 1, elems; return this.each(function(){ if ( !elems ) { elems = jQuery.clean( args, this.ownerDocument ); if ( reverse ) elems.reverse(); } var obj = this; if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") ); var scripts = jQuery( [] ); jQuery.each(elems, function(){ var elem = clone ? jQuery( this ).clone( true )[0] : this; // execute all scripts after the elements have been injected if ( jQuery.nodeName( elem, "script" ) ) { scripts = scripts.add( elem ); } else { // Remove any inner scripts for later evaluation if ( elem.nodeType == 1 ) scripts = scripts.add( jQuery( "script", elem ).remove() ); // Inject the elements into the document callback.call( obj, elem ); } }); scripts.each( evalScript ); }); } }; // Give the init function the jQuery prototype for later instantiation jQuery.prototype.init.prototype = jQuery.prototype; function evalScript( i, elem ) { if ( elem.src ) jQuery.ajax({ url: elem.src, async: false, dataType: "script" }); else jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); if ( elem.parentNode ) elem.parentNode.removeChild( elem ); } jQuery.extend = jQuery.fn.extend = function() { // copy reference to target object var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; // Handle a deep copy situation if ( target.constructor == Boolean ) { deep = target; target = arguments[1] || {}; // skip the boolean and the target i = 2; } // Handle case when target is a string or something (possible in deep copy) if ( typeof target != "object" && typeof target != "function" ) target = {}; // extend jQuery itself if only one argument is passed if ( length == 1 ) { target = this; i = 0; } for ( ; i < length; i++ ) // Only deal with non-null/undefined values if ( (options = arguments[ i ]) != null ) // Extend the base object for ( var name in options ) { // Prevent never-ending loop if ( target === options[ name ] ) continue; // Recurse if we're merging object values if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) target[ name ] = jQuery.extend( deep, target[ name ], options[ name ] ); // Don't bring in undefined values else if ( options[ name ] != undefined ) target[ name ] = options[ name ]; } // Return the modified object return target; }; var expando = "jQuery" + (new Date()).getTime(), uuid = 0, windowData = {}; // exclude the following css properties to add px var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i; jQuery.extend({ noConflict: function( deep ) { window.$ = _$; if ( deep ) window.jQuery = _jQuery; return jQuery; }, // See test/unit/core.js for details concerning this function. isFunction: function( fn ) { return !!fn && typeof fn != "string" && !fn.nodeName && fn.constructor != Array && /function/i.test( fn + "" ); }, // check if an element is in a (or is an) XML document isXMLDoc: function( elem ) { return elem.documentElement && !elem.body || elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; }, // Evalulates a script in a global context globalEval: function( data ) { data = jQuery.trim( data ); if ( data ) { // Inspired by code by Andrea Giammarchi // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html var head = document.getElementsByTagName("head")[0] || document.documentElement, script = document.createElement("script"); script.type = "text/javascript"; if ( jQuery.browser.msie ) script.text = data; else script.appendChild( document.createTextNode( data ) ); head.appendChild( script ); head.removeChild( script ); } }, nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); }, cache: {}, data: function( elem, name, data ) { elem = elem == window ? windowData : elem; var id = elem[ expando ]; // Compute a unique ID for the element if ( !id ) id = elem[ expando ] = ++uuid; // Only generate the data cache if we're // trying to access or manipulate it if ( name && !jQuery.cache[ id ] ) jQuery.cache[ id ] = {}; // Prevent overriding the named cache with undefined values if ( data != undefined ) jQuery.cache[ id ][ name ] = data; // Return the named cache data, or the ID for the element return name ? jQuery.cache[ id ][ name ] : id; }, removeData: function( elem, name ) { elem = elem == window ? windowData : elem; var id = elem[ expando ]; // If we want to remove a specific section of the element's data if ( name ) { if ( jQuery.cache[ id ] ) { // Remove the section of cache data delete jQuery.cache[ id ][ name ]; // If we've removed all the data, remove the element's cache name = ""; for ( name in jQuery.cache[ id ] ) break; if ( !name ) jQuery.removeData( elem ); } // Otherwise, we want to remove all of the element's data } else { // Clean up the element expando try { delete elem[ expando ]; } catch(e){ // IE has trouble directly removing the expando // but it's ok with using removeAttribute if ( elem.removeAttribute ) elem.removeAttribute( expando ); } // Completely remove the data cache delete jQuery.cache[ id ]; } }, // args is for internal usage only each: function( object, callback, args ) { if ( args ) { if ( object.length == undefined ) { for ( var name in object ) if ( callback.apply( object[ name ], args ) === false ) break; } else for ( var i = 0, length = object.length; i < length; i++ ) if ( callback.apply( object[ i ], args ) === false ) break; // A special, fast, case for the most common use of each } else { if ( object.length == undefined ) { for ( var name in object ) if ( callback.call( object[ name ], name, object[ name ] ) === false ) break; } else for ( var i = 0, length = object.length, value = object[0]; i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} } return object; }, prop: function( elem, value, type, i, name ) { // Handle executable functions if ( jQuery.isFunction( value ) ) value = value.call( elem, i ); // Handle passing in a number to a CSS property return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ? value + "px" : value; }, className: { // internal only, use addClass("class") add: function( elem, classNames ) { jQuery.each((classNames || "").split(/\s+/), function(i, className){ if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) elem.className += (elem.className ? " " : "") + className; }); }, // internal only, use removeClass("class") remove: function( elem, classNames ) { if (elem.nodeType == 1) elem.className = classNames != undefined ? jQuery.grep(elem.className.split(/\s+/), function(className){ return !jQuery.className.has( classNames, className ); }).join(" ") : ""; }, // internal only, use is(".class") has: function( elem, className ) { return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; } }, // A method for quickly swapping in/out CSS properties to get correct calculations swap: function( elem, options, callback ) { var old = {}; // Remember the old values, and insert the new ones for ( var name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } callback.call( elem ); // Revert the old values for ( var name in options ) elem.style[ name ] = old[ name ]; }, css: function( elem, name, force ) { if ( name == "width" || name == "height" ) { var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; function getWH() { val = name == "width" ? elem.offsetWidth : elem.offsetHeight; var padding = 0, border = 0; jQuery.each( which, function() { padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; }); val -= Math.round(padding + border); } if ( jQuery(elem).is(":visible") ) getWH(); else jQuery.swap( elem, props, getWH ); return Math.max(0, val); } return jQuery.curCSS( elem, name, force ); }, curCSS: function( elem, name, force ) { var ret; // A helper method for determining if an element's values are broken function color( elem ) { if ( !jQuery.browser.safari ) return false; var ret = document.defaultView.getComputedStyle( elem, null ); return !ret || ret.getPropertyValue("color") == ""; } // We need to handle opacity special in IE if ( name == "opacity" && jQuery.browser.msie ) { ret = jQuery.attr( elem.style, "opacity" ); return ret == "" ? "1" : ret; } // Opera sometimes will give the wrong display answer, this fixes it, see #2037 if ( jQuery.browser.opera && name == "display" ) { var save = elem.style.outline; elem.style.outline = "0 solid black"; elem.style.outline = save; } // Make sure we're using the right name for getting the float value if ( name.match( /float/i ) ) name = styleFloat; if ( !force && elem.style && elem.style[ name ] ) ret = elem.style[ name ]; else if ( document.defaultView && document.defaultView.getComputedStyle ) { // Only "float" is needed here if ( name.match( /float/i ) ) name = "float"; name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); var getComputedStyle = document.defaultView.getComputedStyle( elem, null ); if ( getComputedStyle && !color( elem ) ) ret = getComputedStyle.getPropertyValue( name ); // If the element isn't reporting its values properly in Safari // then some display: none elements are involved else { var swap = [], stack = []; // Locate all of the parent display: none elements for ( var a = elem; a && color(a); a = a.parentNode ) stack.unshift(a); // Go through and make them visible, but in reverse // (It would be better if we knew the exact display type that they had) for ( var i = 0; i < stack.length; i++ ) if ( color( stack[ i ] ) ) { swap[ i ] = stack[ i ].style.display; stack[ i ].style.display = "block"; } // Since we flip the display style, we have to handle that // one special, otherwise get the value ret = name == "display" && swap[ stack.length - 1 ] != null ? "none" : ( getComputedStyle && getComputedStyle.getPropertyValue( name ) ) || ""; // Finally, revert the display styles back for ( var i = 0; i < swap.length; i++ ) if ( swap[ i ] != null ) stack[ i ].style.display = swap[ i ]; } // We should always get a number back from opacity if ( name == "opacity" && ret == "" ) ret = "1"; } else if ( elem.currentStyle ) { var camelCase = name.replace(/\-(\w)/g, function(all, letter){ return letter.toUpperCase(); }); ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; // From the awesome hack by Dean Edwards // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 // If we're not dealing with a regular pixel number // but a number that has a weird ending, we need to convert it to pixels if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { // Remember the original values var style = elem.style.left, runtimeStyle = elem.runtimeStyle.left; // Put in the new values to get a computed value out elem.runtimeStyle.left = elem.currentStyle.left; elem.style.left = ret || 0; ret = elem.style.pixelLeft + "px"; // Revert the changed values elem.style.left = style; elem.runtimeStyle.left = runtimeStyle; } } return ret; }, clean: function( elems, context ) { var ret = []; context = context || document; // !context.createElement fails in IE with an error but returns typeof 'object' if (typeof context.createElement == 'undefined') context = context.ownerDocument || context[0] && context[0].ownerDocument || document; jQuery.each(elems, function(i, elem){ if ( !elem ) return; if ( elem.constructor == Number ) elem = elem.toString(); // Convert html string into DOM nodes if ( typeof elem == "string" ) { // Fix "XHTML"-style tags in all browsers elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? all : front + ">"; }); // Trim whitespace, otherwise indexOf won't work as expected var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div"); var wrap = // option or optgroup !tags.indexOf("", "" ] || !tags.indexOf("", "" ] || tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && [ 1, "", "
" ] || !tags.indexOf("", "" ] || // matched above (!tags.indexOf("", "" ] || !tags.indexOf("", "" ] || // IE can't serialize and ramaze-2012.12.08/examples/app/todolist/0000755000004100000410000000000012140566653017665 5ustar www-datawww-dataramaze-2012.12.08/examples/app/todolist/controller/0000755000004100000410000000000012140566653022050 5ustar www-datawww-dataramaze-2012.12.08/examples/app/todolist/controller/task.rb0000644000004100000410000000145312140566653023342 0ustar www-datawww-datamodule TodoList class Tasks < Controller map '/' def index @tasks = Task.all @title = request[:title] end def create if request.post? and title = request[:title] title.strip! unless title.empty? Task.create :title => title end end redirect route('/', :title => title) rescue Sequel::DatabaseError => ex redirect route('/', :title => title) end def open(title) Task[:title => Ramaze::Helper::CGI.url_decode(title)].open! redirect r('/') end def close(title) Task[:title => Ramaze::Helper::CGI.url_decode(title)].close! redirect r('/') end def delete(title) Task[:title => Ramaze::Helper::CGI.url_decode(title)].destroy redirect r('/') end end end ramaze-2012.12.08/examples/app/todolist/controller/init.rb0000644000004100000410000000025712140566653023344 0ustar www-datawww-datamodule TodoList class Controller < Ramaze::Controller layout :default engine :Etanni map '/', :todolist app.location = '/' end end require __DIR__'task' ramaze-2012.12.08/examples/app/todolist/model/0000755000004100000410000000000012140566653020765 5ustar www-datawww-dataramaze-2012.12.08/examples/app/todolist/model/task.rb0000644000004100000410000000124112140566653022252 0ustar www-datawww-datamodule TodoList class Task < Sequel::Model set_schema do primary_key :id varchar :title, :unique => true, :empty => false boolean :done, :default => false end create_table unless table_exists? def href(action) Tasks.r(action, Ramaze::Helper::CGI.url_encode(title)) end def toggle_link action = done ? 'open' : 'close' Tasks.a(action, href(action)) end def delete_link Tasks.a('delete', href('delete')) end def status done ? 'done' : 'pending' end def close! self.done = true save end def open! self.done = false save end end end ramaze-2012.12.08/examples/app/todolist/model/init.rb0000644000004100000410000000046512140566653022262 0ustar www-datawww-datamodule TodoList # yeah, we're lazy Sequel::Model.plugin(:schema) # Uncomment the line for the DB you want to use. # Sqlite In memory, fastest, but cannot persist over restarts. DB = Sequel.sqlite # Sqlite on disk # DB = Sequel.sqlite(__DIR__('../todolist.sqlite')) end require __DIR__'task' ramaze-2012.12.08/examples/app/todolist/start.rb0000644000004100000410000000020012140566653021337 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' require 'sequel' require __DIR__'controller/init' require __DIR__'model/init' Ramaze.start ramaze-2012.12.08/examples/app/todolist/public/0000755000004100000410000000000012140566653021143 5ustar www-datawww-dataramaze-2012.12.08/examples/app/todolist/public/css/0000755000004100000410000000000012140566653021733 5ustar www-datawww-dataramaze-2012.12.08/examples/app/todolist/public/css/screen.css0000644000004100000410000000107012140566653023722 0ustar www-datawww-datah1 { text-align: center; color: #33f; } th { color: #33f; } fieldset { border: 0; width: 21em; margin: auto; padding: 1em; margin-bottom: 2em; } fieldset legend { color: #33f; } table { width: 50em; border: 2px solid #eef; margin: auto; } table caption { color: #33f; } tr.done { background: #efe; } tr.pending { background: #fee; } tr:hover { background: #eef; } td { width: 5em; } td.title { font-weight: bold; width: auto; } td a { display: block; } td.toggle a { color: #3a3; } td.delete a { color: #f00; } ramaze-2012.12.08/examples/app/todolist/public/favicon.ico0000644000004100000410000000117612140566653023271 0ustar www-datawww-data h(@J; D=%ZHkXxf4`]RvW}|xnt8F#C4mFSDF3483J(b36s "2#44R#"3386r #3L43&33046&S3M=#3*34&3CD&S#4DDl&EQ#D8&wDD(CS4M#4M$4M(R3N(4(ۗ#2H#D421"3m""2#""i"#TiuVwramaze-2012.12.08/examples/app/todolist/view/0000755000004100000410000000000012140566653020637 5ustar www-datawww-dataramaze-2012.12.08/examples/app/todolist/view/index.xhtml0000644000004100000410000000157612140566653023035 0ustar www-datawww-data
Add a task by entering a title.
#{flashbox} No Tasks
All pending and closed tasks, in order of creation.
TitleStatusToggleDelete
#{h task.title} #{task.status.capitalize} #{task.toggle_link} #{task.delete_link}
ramaze-2012.12.08/examples/app/todolist/layout/0000755000004100000410000000000012140566653021202 5ustar www-datawww-dataramaze-2012.12.08/examples/app/todolist/layout/default.xhtml0000644000004100000410000000054012140566653023703 0ustar www-datawww-data TodoList

TodoList

#{@content}
ramaze-2012.12.08/examples/app/localization/0000755000004100000410000000000012140566653020514 5ustar www-datawww-dataramaze-2012.12.08/examples/app/localization/locale/0000755000004100000410000000000012140566653021753 5ustar www-datawww-dataramaze-2012.12.08/examples/app/localization/locale/de.yaml0000644000004100000410000000020312140566653023222 0ustar www-datawww-data'hello world': 'Guten Tag Welt!' 'just for fun': 'halm im Scherz' 'english': 'Englisch' 'japanese': 'Japanisch' 'german': 'Deutsch'ramaze-2012.12.08/examples/app/localization/locale/ja.yaml0000644000004100000410000000021512140566653023227 0ustar www-datawww-data'hello world': 'おはよう世界!' 'just for fun': '冗談半分に' 'english': '英語' 'japanese': '日本語' 'german': 'ドイツ語'ramaze-2012.12.08/examples/app/localization/locale/en.yaml0000644000004100000410000000017312140566653023242 0ustar www-datawww-data'hello world': 'Hello world!' 'just for fun': 'Just for fun' 'english': 'English' 'japanese': 'Japanese' 'german': 'German'ramaze-2012.12.08/examples/app/localization/start.rb0000644000004100000410000000177412140566653022207 0ustar www-datawww-data# -*- coding: utf-8 -*- require 'rubygems' require 'ramaze' # require YAML based localization require 'ramaze/helper/localize' # # Old Dispatcher::Action::FILTER style localization. # class MainController < Ramaze::Controller helper :localize def index # Enclose the strings that have to be localized with {} "

{hello world}

{just for fun}

{english}
{japanese}
{german}
" end def locale(name) session[:lang] = name redirect r(:/) end # for Localization alias :raw_wrap_action_call :wrap_action_call def wrap_action_call(action, &block) localize(raw_wrap_action_call(action, &block)) end private Dictionary = Ramaze::Helper::Localize::Dictionary.new Dir.glob('./locale/*.yaml').each do |path| Dictionary.load(File.basename(path, '.yaml').intern, :yaml => path) end def localize_dictionary Dictionary end end Ramaze.start ramaze-2012.12.08/examples/app/whywiki/0000755000004100000410000000000012140566653017517 5ustar www-datawww-dataramaze-2012.12.08/examples/app/whywiki/spec/0000755000004100000410000000000012140566653020451 5ustar www-datawww-dataramaze-2012.12.08/examples/app/whywiki/spec/whywiki.rb0000644000004100000410000000274212140566653022476 0ustar www-datawww-datarequire 'ramaze' require 'ramaze/spec/helper' spec_require 'bluecloth', 'hpricot' $LOAD_PATH.unshift base = __DIR__('..') Db = Ramaze::YAMLStoreCache.new("#{base}/testwiki.yaml") require 'start' describe 'WikiController' do behaves_like 'http' def page(name) page = get(name) page.status.should == 200 page.body.should.not == nil doc = Hpricot(page.body) title = doc.at('title').inner_html body = doc.at('body') return title, body end it 'should start' do ramaze :public_root => base/:public, :view_root => base/:template get('/').status.should == 302 end it 'should have main page' do t,body = page('/show/Home') t.should.match(/^MicroWiki Home$/) body.at('h1').inner_html.should == 'Home' body.at('a[@href=/edit/Home]').inner_html.should == 'Create Home' end it 'should have edit page' do t,body = page('/edit/Home') t.should.match(/^MicroWiki Edit Home$/) body.at('a[@href=/]').inner_html.should == '< Home' body.at('h1').inner_html.should == 'Edit Home' body.at('form/textarea').should.not == nil end it 'should create pages' do post('/save','text'=>'the text','page'=>'ThePage').status.should == 302 page = Hpricot(get('/show/ThePage').body) body = page.at('body>div') body.should.not == nil body.at('a[@href=/edit/ThePage]').inner_html.should =='Edit ThePage' body.at('p').inner_html.should == 'the text' end FileUtils.rm("#{base}/testwiki.yaml") end ramaze-2012.12.08/examples/app/whywiki/start.rb0000644000004100000410000000163312140566653021204 0ustar www-datawww-data# written as an example of how to implement the minimal _why wiki require 'rubygems' require 'ramaze' require 'bluecloth' Db = Ramaze::YAMLStoreCache.new('wiki.yaml') unless defined?(Db) class WikiController < Ramaze::Controller map :/ def index redirect R(:show, 'Home') end def show page = 'Home' @page = url_decode(page) @text = Db[page].to_s @edit_link = "/edit/#{page}" @text.gsub!(/\[\[(.*?)\]\]/) do |m| exists = Db[$1] ? 'exists' : 'nonexists' A($1, :href => Rs(:show, url_encode($1)), :class => exists) end @text = BlueCloth.new(@text).to_html end def edit page = 'Home' @page = url_decode(page) @text = Db[page] end def save redirect_referer unless request.post? page = request['page'].to_s text = request['text'].to_s Db[page] = text redirect Rs(:show, url_encode(page)) end end Ramaze.start :adapter => :mongrel ramaze-2012.12.08/examples/app/whywiki/template/0000755000004100000410000000000012140566653021332 5ustar www-datawww-dataramaze-2012.12.08/examples/app/whywiki/template/show.xhtml0000644000004100000410000000065512140566653023376 0ustar www-datawww-data MicroWiki #{@page} < Home

#{@page}

Create #@page
Edit #@page #@text
ramaze-2012.12.08/examples/app/whywiki/template/edit.xhtml0000644000004100000410000000062412140566653023337 0ustar www-datawww-data MicroWiki Edit #{@page}

Edit #{@page}

#{ A("< Home", :href => Rs()) }
ramaze-2012.12.08/examples/app/auth/0000755000004100000410000000000012140566653016765 5ustar www-datawww-dataramaze-2012.12.08/examples/app/auth/start.rb0000644000004100000410000000076412140566653020456 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' # Small application performing authentication without a database module Auth USERS = { 'demo' => Digest::SHA1.hexdigest('demo'), 'manveru' => Digest::SHA1.hexdigest('letmein'), } class AuthController < Ramaze::Controller map '/', :auth app.location = '/' helper :auth layout :auth trait :auth_table => USERS before(:secret){ login_required } before(:login){ redirect r('/') if logged_in? } end end Ramaze.start ramaze-2012.12.08/examples/app/auth/view/0000755000004100000410000000000012140566653017737 5ustar www-datawww-dataramaze-2012.12.08/examples/app/auth/view/secret.xhtml0000644000004100000410000000006112140566653022277 0ustar www-datawww-dataSomething you can only see if you are logged in. ramaze-2012.12.08/examples/app/auth/view/login.xhtml0000644000004100000410000000076512140566653022135 0ustar www-datawww-data ramaze-2012.12.08/examples/app/auth/view/index.xhtml0000644000004100000410000000021012140566653022115 0ustar www-datawww-data

This is a small example application showing you how to integrate the Ramaze::Helper::Auth into your own code.

ramaze-2012.12.08/examples/app/auth/layout/0000755000004100000410000000000012140566653020302 5ustar www-datawww-dataramaze-2012.12.08/examples/app/auth/layout/auth.xhtml0000644000004100000410000000077412140566653022331 0ustar www-datawww-data Auth App
#{a 'Logout', :logout} #{a 'Login', :login}

Auth App

#{@content}
ramaze-2012.12.08/examples/app/upload/0000755000004100000410000000000012140566653017310 5ustar www-datawww-dataramaze-2012.12.08/examples/app/upload/start.rb0000644000004100000410000000120112140566653020764 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class Upload < Ramaze::Controller def index return unless request.post? @inspection = h(request.params.pretty_inspect) tempfile, filename, @type = request[:file].values_at(:tempfile, :filename, :type) @extname, @basename = File.extname(filename), File.basename(filename) @file_size = tempfile.size options = Upload.options dir = File.join(options.roots.first, options.publics.first) file = File.expand_path(@basename, dir) FileUtils.mkdir_p(dir) FileUtils.cp(tempfile.path, file) @is_image = @type.split('/').first == 'image' end end Ramaze.start ramaze-2012.12.08/examples/app/upload/view/0000755000004100000410000000000012140566653020262 5ustar www-datawww-dataramaze-2012.12.08/examples/app/upload/view/index.xhtml0000644000004100000410000000117512140566653022453 0ustar www-datawww-data
Upload file:

#{@basename}

File size: #{@file_size} bytes

Uploaded Image

Uploaded Image

You uploaded a #{@type} file. Upload an image file to see it here.

request.params.inspect:

#{@inspection}
ramaze-2012.12.08/examples/app/wiktacular/0000755000004100000410000000000012140566653020172 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wiktacular/README0000644000004100000410000000015712140566653021055 0ustar www-datawww-dataA wiki with page versioning. The persistence layer is file-based and shows how to build non-RDBMS-based apps. ramaze-2012.12.08/examples/app/wiktacular/src/0000755000004100000410000000000012140566653020761 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wiktacular/src/model.rb0000644000004100000410000000431212140566653022406 0ustar www-datawww-datarequire 'fileutils' require 'cgi' class WikiEntry ENTRIES_DIR = __DIR__('../mkd') class << self def [](name) if File.exist?(File.join(ENTRIES_DIR, File.basename(File.expand_path(name)))) new(name) end end def titles Dir[File.join(ENTRIES_DIR,'*')].entries end end include Ramaze::Helper::CGI attr_reader :history, :current, :name def initialize(name) # avoid tampering with the path @name = File.basename(File.expand_path(name)) update end def update @current = "#{base}/current.mkd" @history = Dir["#{base}/*_*.mkd"] end def save(newtext) FileUtils.mkdir_p(base) if content != newtext history_name = "#{base}/#{timestamp}.mkd" FileUtils.mv(@current, history_name) if exists? File.open(@current, "w+"){|fp| fp.print(newtext) } end end def rename to FileUtils.mv(base, "mkd/#{to}") end def delete FileUtils.rm_rf(base) if exists? end def revert return if not exists? or @history.empty? FileUtils.mv(@current, @current + ".bak") FileUtils.mv(@history.last, @current) unless @history.empty? update end def unrevert bakfile = @current + '.bak' return unless File.exists?(bakfile) FileUtils.mv(bakfile, @current) update end def exists? File.exists?(@current) end def base File.join(ENTRIES_DIR, @name) end def route MainController.route(:index, name) end def content CGI.unescapeHTML(File.read(@current)) if exists? end def timestamp Time.now.strftime("%Y-%m-%d_%H-%M-%S") end def escape_path(path) File.basename(File.expand_path(path)) end end class EntryView class << self def render content mkd2html(content || "No Entry") end def mkd2html(text) html = BlueCloth.new(text).to_html html.gsub!(/\[\[(.*?)\]\]/) do name = $1 if entry = WikiEntry[name] exists = 'exists' route = entry.route else exists = 'nonexists' route = MainController.route(:index, name) end title = Rack::Utils.escape_html(name) "#{title}" end html end end end ramaze-2012.12.08/examples/app/wiktacular/src/controller.rb0000644000004100000410000000211312140566653023466 0ustar www-datawww-dataclass MainController < Ramaze::Controller layout :application before_all {setup} def index(handle = "main") @entry = WikiEntry.new(handle) @handle = @entry.name if @entry.exists? @text = EntryView.render(@entry.content) @history = @entry.history.map{|f| DateTime.strptime(File.basename(f, ".mkd"), "%Y-%m-%d_%H-%M-%S") }.join("
\n") else @text = "No Entry" end end def edit(handle) @entry = WikiEntry.new(handle) @handle = @entry.name @text = @entry.content end def revert(handle) WikiEntry[handle].revert redirect route(handle) end def unrevert(handle) WikiEntry[handle].unrevert redirect route(handle) end def delete(handle) WikiEntry.new(handle).delete redirect_referer end def save redirect_referer unless request.post? handle = request['handle'] entry = WikiEntry.new(handle) entry.save(request['text']) redirect entry.route end def setup @nodes = WikiEntry.titles.map{|f| anchor File.basename(f) }.join("\n") end end ramaze-2012.12.08/examples/app/wiktacular/spec/0000755000004100000410000000000012140566653021124 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wiktacular/spec/wiktacular.rb0000644000004100000410000001051512140566653023621 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' require 'ramaze/spec/bacon' require 'nokogiri' require 'bluecloth' $LOAD_PATH.unshift base = __DIR__('..') require 'start' describe 'wiktacular' do behaves_like :rack_test NEWPAGE = "newpagename" def check_page(name) page = get(name) page.status.should == 200 page.body.should.not == nil doc = Nokogiri::HTML(page.body) doc.at('title').inner_html.should == 'Wiktacular' menu = doc.css('div#menu a') menu[0].inner_html.should == 'Home' menu[1].inner_html.should == 'New Entry' navigation = doc.css('div#navigation div a') %w[link main markdown testing].each do |link| navigation.map{|n| n.inner_html }.sort.should.include(link) end manipulate = doc.search('div#manipulate a') manipulate.map{|m| m.inner_html }.should == %w[Edit Delete Revert Unrevert] doc end it 'should start' do get('/').status.should == 200 end it 'should have main page' do check_page('/main') end it 'should have link page' do check_page('/link') end it 'should have markdown page' do check_page('/markdown') end it 'should have testing page' do check_page('/testing') end it 'should not have foobar page' do doc = check_page('/foobar') doc.at('div#content').inner_html.strip.should =~ /No Entry/ end it 'should allow page editing' do doc = check_page('/edit/main') form = doc.at('div#content>form') form.should.not == nil form.at('input[@type=text]')['value'].should == 'main' form.at('textarea').inner_html.should.match(/# Hello, World/) form.at('a').inner_html.should == 'cancel' form.at('a')['href'].should == '/main' end def edit_page(name, text = 'new text') page = post('/save', 'handle' => name,'text' => text) page.status.should == 302 path = MainController.r(:index, name) page.location.should == "http://example.org#{path}" end def delete_page(name) page = get('/delete/'+name) page.status.should == 302 page.location.should == 'http://example.org/' end def revert_page(name) page = get('/revert/'+name) page.status.should == 302 page.location.should == 'http://example.org/'+name end def unrevert_page(name) page = get('/revert/'+name) page.status.should == 302 page.location.should == 'http://example.org/'+name end it 'editing should create page' do edit_page(NEWPAGE, 'new text') doc = check_page("/#{NEWPAGE}") doc.at('div#text').inner_html.strip.should == '

new text

' delete_page(NEWPAGE) end it 'editing should modify page' do edit_page(NEWPAGE, 'text text') doc = check_page("/#{NEWPAGE}") doc.at('div#text').inner_html.strip.should == '

text text

' edit_page(NEWPAGE,'some other text') doc = check_page("/#{NEWPAGE}") doc.at('div#text').inner_html.strip.should == '

some other text

' delete_page(NEWPAGE) end it "should be possible to revert changes" do edit_page(NEWPAGE, 'first text') edit_page(NEWPAGE, 'second text') doc = check_page("/#{NEWPAGE}") doc.at('div#text').inner_html.strip.should == '

second text

' revert_page(NEWPAGE) doc = check_page("/#{NEWPAGE}") doc.at('div#text').inner_html.strip.should == '

first text

' end it "should be possible to unrevert changes" do edit_page(NEWPAGE, 'first text') edit_page(NEWPAGE, 'second text') revert_page(NEWPAGE) doc = check_page("/#{NEWPAGE}") doc.at('div#text').inner_html.strip.should == '

first text

' unrevert_page(NEWPAGE) doc = check_page("/#{NEWPAGE}") doc.at('div#text').inner_html.strip.should == '

first text

' end it "should convert [[#{NEWPAGE}]] to existing link" do edit_page(NEWPAGE, "Link: [[#{NEWPAGE}]]") doc = check_page("/#{NEWPAGE}") a = doc.at('div#text>p>a') a['class'].should == 'exists' a['href'].should == "/index/#{NEWPAGE}" a.inner_html.should == NEWPAGE end it "should convert [[chunky bacon]] to nonexisting link" do edit_page(NEWPAGE, "Link: [[chunky bacon]]") doc = check_page("/#{NEWPAGE}") a = doc.at('div#text>p>a') a['class'].should == 'nonexists' a['href'].should == "/index/chunky+bacon" a.inner_html.should == "chunky bacon" end should 'delete page for cleanup' do WikiEntry.new(NEWPAGE).delete.first.should =~ /#{NEWPAGE}$/ end end ramaze-2012.12.08/examples/app/wiktacular/start.rb0000644000004100000410000000016412140566653021655 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' require 'bluecloth' require 'src/model' require 'src/controller' Ramaze.start ramaze-2012.12.08/examples/app/wiktacular/public/0000755000004100000410000000000012140566653021450 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wiktacular/public/screen.css0000644000004100000410000000160612140566653023444 0ustar www-datawww-databody { background: #dff; } a { text-decoration: none; color: #224; } a:hover { text-decoration: underline overline; color: #335; } a:before { content:"[ "; } a:after { content:" ]"; } h1 { font-size: 1.5em; } h2 { font-size: 1.4em; } h3 { font-size: 1.3em; } h4 { font-size: 1.2em; } h5 { font-size: 1.1em; } div#manipulate { text-align: right; } div#navigation { background: #fff; padding: 0.5em; } div#text { border: 1px black dashed; padding: 1em; margin: 1em; } div#menu { height: 2em; font-size: 1.1em; } form { background: #cee; padding: 2em; } input { border: 1px solid #699; background: #eee; } input:focus { border: 1px solid green; } textarea { width: 100%; height: 35em; border: 1px solid #699; background: #eee; padding: 5px; } textarea:focus { border: 1px solid green; } #copyright { text-align: center; font-size: 0.9em; } ramaze-2012.12.08/examples/app/wiktacular/public/favicon.ico0000644000004100000410000000117612140566653023576 0ustar www-datawww-data h(@J; D=%ZHkXxf4`]RvW}|xnt8F#C4mFSDF3483J(b36s "2#44R#"3386r #3L43&33046&S3M=#3*34&3CD&S#4DDl&EQ#D8&wDD(CS4M#4M$4M(R3N(4(ۗ#2H#D421"3m""2#""i"#TiuVwramaze-2012.12.08/examples/app/wiktacular/view/0000755000004100000410000000000012140566653021144 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wiktacular/view/new.xhtml0000644000004100000410000000027412140566653023016 0ustar www-datawww-data
or #{anchor('cancel','/')}
ramaze-2012.12.08/examples/app/wiktacular/view/edit.xhtml0000644000004100000410000000034512140566653023151 0ustar www-datawww-data
or #{anchor('cancel', @entry.name)}
ramaze-2012.12.08/examples/app/wiktacular/view/index.xhtml0000644000004100000410000000021312140566653023325 0ustar www-datawww-data
#@text
History of this entry:
#@history
ramaze-2012.12.08/examples/app/wiktacular/mkd/0000755000004100000410000000000012140566653020745 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wiktacular/mkd/main/0000755000004100000410000000000012140566653021671 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wiktacular/mkd/main/2007-07-20_16-31-33.mkd0000644000004100000410000000001712140566653024371 0ustar www-datawww-data# Hello, World ramaze-2012.12.08/examples/app/wiktacular/mkd/main/current.mkd0000644000004100000410000000011212140566653024042 0ustar www-datawww-data# Hello, World This is the first test of this most awesome [[wiktaculous]]ramaze-2012.12.08/examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd0000644000004100000410000000010212140566653024363 0ustar www-datawww-data# Hello, World ## This is the first test of this most awesome wikiramaze-2012.12.08/examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd0000644000004100000410000000011012140566653024374 0ustar www-datawww-data# Hello, World ## This is the first test of this most awesome [[rawiki]]ramaze-2012.12.08/examples/app/wiktacular/mkd/main/2007-07-20_19-21-12.mkd0000644000004100000410000000001712140566653024370 0ustar www-datawww-data# Hello, World ramaze-2012.12.08/examples/app/wiktacular/mkd/testing/0000755000004100000410000000000012140566653022422 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-01.mkd0000644000004100000410000000015412140566653025130 0ustar www-datawww-data# Just a test Some more text ## nothing serious And some text ### Even less serious Here is a [[link]] ramaze-2012.12.08/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-54.mkd0000644000004100000410000000027412140566653025144 0ustar www-datawww-data# Just a test Some more text ## nothing serious And some text ### Even less serious Here is a [[link]] foo ramaze-2012.12.08/examples/app/wiktacular/mkd/testing/current.mkd0000644000004100000410000000027412140566653024604 0ustar www-datawww-data# Just a test Some more text ## nothing serious And some text ### Even less serious Here is a [[link]] foo ramaze-2012.12.08/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-08.mkd0000644000004100000410000000026212140566653025140 0ustar www-datawww-data# Just a test Some more text ## nothing serious And some text ### Even less serious Here is a [[link]] foo ramaze-2012.12.08/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd0000644000004100000410000000004012140566653025125 0ustar www-datawww-data# Just a test ## nothing seriousramaze-2012.12.08/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-32.mkd0000644000004100000410000000020412140566653025130 0ustar www-datawww-data# Just a test Some more text ## nothing serious And some text ### Even less serious Here is a [[link]] fooramaze-2012.12.08/examples/app/wiktacular/mkd/testing/2007-07-20_19-43-50.mkd0000644000004100000410000000006612140566653025133 0ustar www-datawww-data# Just a test ## nothing serious ### Even less seriousramaze-2012.12.08/examples/app/wiktacular/mkd/link/0000755000004100000410000000000012140566653021702 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wiktacular/mkd/link/current.mkd0000644000004100000410000000006612140566653024063 0ustar www-datawww-dataLinks are basically [[markdown]] files, far down underramaze-2012.12.08/examples/app/wiktacular/mkd/link/2007-07-20_19-45-51.mkd0000644000004100000410000000005112140566653024410 0ustar www-datawww-dataLinks are basically files, far down underramaze-2012.12.08/examples/app/wiktacular/mkd/markdown/0000755000004100000410000000000012140566653022567 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wiktacular/mkd/markdown/current.mkd0000644000004100000410000000025212140566653024745 0ustar www-datawww-data# Markdown Markdown is a engine for converting plain text to [[HTML]]. You can find more information at [markdown homepage](http://daringfireball.net/projects/markdown/)ramaze-2012.12.08/examples/app/wiktacular/layout/0000755000004100000410000000000012140566653021507 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wiktacular/layout/application.xhtml0000644000004100000410000000127012140566653025070 0ustar www-datawww-data Wiktacular
#@content
ramaze-2012.12.08/examples/app/wikore/0000755000004100000410000000000012140566653017324 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wikore/src/0000755000004100000410000000000012140566653020113 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wikore/src/model.rb0000644000004100000410000000166712140566653021552 0ustar www-datawww-datarequire 'sequel' if $wikore_db == :memory DB = Sequel.sqlite else DB_FILE = __DIR__('wikore.db') DB = Sequel.connect("sqlite://#{DB_FILE}") end Sequel::Model.plugin :schema module Model PAGE_SCHEMA = lambda{|db| primary_key :id boolean :active, :default => true text :text integer :version } class Page < Sequel::Model(:page) set_schema do instance_eval(&PAGE_SCHEMA) text :title, :unique => true, :null => false end def backup hash = @values.dup hash.delete :id OldPage.create(hash) end def revert backup = OldPage[:title => title].values.dup backup.delete :id delete self.class.create(backup) end end class OldPage < Sequel::Model(:old_page) set_schema do instance_eval(&PAGE_SCHEMA) text :title, :unique => false, :null => false end end [Page, OldPage].each do |klass| klass.create_table? end end ramaze-2012.12.08/examples/app/wikore/src/controller.rb0000644000004100000410000000315112140566653022623 0ustar www-datawww-dataclass Ramaze::Controller Page = Model::Page OldPage = Model::OldPage end class MainController < Ramaze::Controller def index(title = 'Main', version = nil) query = {:title => title} query[:version] = version.to_i if version model = version ? OldPage : Page if page = model[query] @text, @version = page.text, page.version else @text = "No Page known as '#{title}'" @version = false end end end class Pages < Ramaze::Controller map '/page' def create redirect_referer unless request.post? change "Created Page '%s'" do |title, text| Page.create(:title => title, :text => text, :version => 1) redirect MainController.r(:/, title) end end def save redirect_referer unless request.post? change "Updated Page '%s'" do |title, text| page = Page[:title => title] page.backup page.text = text page.version += 1 page.save redirect MainController.r(:/, title) end end def delete(title) page = Page[:title => title] page.backup page.delete end def rename(title, to) change("Renamed #{title} to '%s'", to) do |title, text| page = Page[:title => title] page.backup page.title = to page.version += 1 page.save end end def revert(title) page = Page[:title => title] page.revert redirect MainController.r(:/, title) end private def change(message, redirect_to = '/') if title = request['title'] and text = request['text'] yield(title, text) message % title end redirect MainController.r(redirect_to) end end ramaze-2012.12.08/examples/app/wikore/spec/0000755000004100000410000000000012140566653020256 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wikore/spec/wikore.rb0000644000004100000410000000462612140566653022113 0ustar www-datawww-datarequire 'ramaze' require 'ramaze/spec/bacon' spec_requires 'hpricot', 'sequel' $LOAD_PATH.unshift base = __DIR__('..') require 'start' describe 'Wikore' do behaves_like :rack_test def check_redirect(to = '/') response = yield response.status.should == 302 response.body.should =~ // end def page_should_exist(name, *matches) page = get("/#{name}") page.status.should == 200 matches.each do |match| page.body.should =~ match end end it 'should have no Main page' do page = get('/Main') page.status.should == 200 page.body.should =~ /No Page known as 'Main'/ end it 'should create a Main page' do check_redirect '/Main' do post('/page/create', 'title' => 'Main', 'text' => 'Newly created Main page') end matches = [ /Newly created Main page/, /Version: 1/ ] page_should_exist('Main', *matches) end it 'should update Main page' do check_redirect '/Main' do post('/page/save', 'title' => 'Main', 'text' => 'Newly updated Main page') end matches = [ /Newly updated Main page/, /Version: 2/ ] page_should_exist('Main', *matches) end it 'should maintain a backup' do matches = [ /Newly created Main page/, /Version: 1/ ] page_should_exist('Main/1', *matches) end it 'should revert' do get('/page/revert/Main') matches = [ /Newly created Main page/, /Version: 1/ ] page_should_exist('Main', *matches) end it 'should incrememt version of Main page' do (2..4).each do |n| post('/page/save', 'title' => 'Main', 'text' => 'updated Main page') matches = [ /updated Main page/, /Version: #{n}/ ] page_should_exist('Main', *matches) end end it 'should rename Main page to Other and back' do check_redirect '/Other' do get('/page/rename/Main/Other') end check_redirect '/Main' do get('/page/rename/Other/Main') end end it 'should delete Main page' do get('/page/delete/Main') page_should_exist('Main', /No Page known as 'Main'/) end it 'should fail if create/save is not POSTed to' do check_redirect '/' do get('/page/save', 'title' => 'Main', 'text' => 'Newly updated Main page') end check_redirect '/' do get('/page/create', 'title' => 'Main', 'text' => 'Newly updated Main page') end end FileUtils.rm_f(DB_FILE) end ramaze-2012.12.08/examples/app/wikore/start.rb0000644000004100000410000000022212140566653021002 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' $wikore = {} require_relative 'src/model' require_relative 'src/controller' Ramaze.start :file => __FILE__ ramaze-2012.12.08/examples/app/wikore/view/0000755000004100000410000000000012140566653020276 5ustar www-datawww-dataramaze-2012.12.08/examples/app/wikore/view/index.xhtml0000644000004100000410000000016312140566653022463 0ustar www-datawww-data
#@text
Version: #@version
ramaze-2012.12.08/examples/helpers/0000755000004100000410000000000012140566653016706 5ustar www-datawww-dataramaze-2012.12.08/examples/helpers/simple_captcha.rb0000644000004100000410000000101412140566653022203 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller helper :simple_captcha def index %|
#{simple_captcha}
| end def answer redirect_referrer unless request.post? answer = request[:answer] is = check_captcha(answer) ? 'Correct' : 'Wrong' "

#{is}

Back" end end Ramaze.start ramaze-2012.12.08/examples/helpers/rest.rb0000644000004100000410000000047012140566653020211 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller helper :rest on_get def index 'Hello, World' end on_post def create p request.params end on_delete def delete 'Deleted stuff' end on_put def insert 'Inserted stuff' end end Ramaze.start ramaze-2012.12.08/examples/helpers/paginate.rb0000644000004100000410000000361012140566653021023 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' USERS = DATA.read.split("\n") class MainController < Ramaze::Controller helper :paginate trait :paginate => { :limit => 6, :var => 'user_page', } def index @pager = paginate(USERS) %q~ Users #{@pager.navigation if @pager.needed?}
      
        #{user}
      
    
#{@pager.navigation if @pager.needed?} ~ end end Ramaze.start __END__ Michael Fellinger 1868 [ 77.13% ] Aman Gupta 211 [ 8.71% ] Jonathan Buch 89 [ 3.67% ] Gabriele Renzi 49 [ 2.02% ] Ara T. Howard 44 [ 1.82% ] Clive Crous 37 [ 1.53% ] Keita Yamaguchi 27 [ 1.11% ] Ryan Grove 17 [ 0.70% ] Pistos 16 [ 0.66% ] Wang, Jinjing 11 [ 0.45% ] Colin Shea 9 [ 0.37% ] Sam Carr 6 [ 0.25% ] Stephan Maka 5 [ 0.21% ] samcarr 4 [ 0.17% ] raggi 3 [ 0.12% ] Clinton R. Nixon 3 [ 0.12% ] Chris Duncan 3 [ 0.12% ] Richard Outten 2 [ 0.08% ] Andy Smith 2 [ 0.08% ] skaar 1 [ 0.04% ] Yasushi Abe 1 [ 0.04% ] Thomas Leitner 1 [ 0.04% ] Rob Lievaart 1 [ 0.04% ] Riku Raisaenen 1 [ 0.04% ] Matt Rubens 1 [ 0.04% ] Martin Hilbig 1 [ 0.04% ] Leo Borisenko 1 [ 0.04% ] Lars Olsson 1 [ 0.04% ] Jeremy Evans 1 [ 0.04% ] Jean-Francois Chevrette 1 [ 0.04% ] James Tucker 1 [ 0.04% ] Fabian Buch 1 [ 0.04% ] Christian Neukirchen 1 [ 0.04% ] Carlo Zottmann 1 [ 0.04% ] Andrew Farmer 1 [ 0.04% ] ramaze-2012.12.08/examples/helpers/cache.rb0000644000004100000410000000120012140566653020267 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller map '/' helper :cache def index @number = rand * 100 %q[ examples/caching

This action just shows you a random number: #{@number}.
If you refresh the page it won't change since you see a cached version.
But if you invalidate it, the page will be regenerated.

] end cache_action :method => 'index' def invalidate Ramaze::Cache.action.delete('/') redirect :/ end end Ramaze.start ramaze-2012.12.08/examples/helpers/identity.rb0000644000004100000410000000060012140566653021060 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller helper :identity def index if session[:openid_identity] %{

#{flash[:success]}

You are logged in as #{session[:openid_identity]}

} else openid_login_form end end end Ramaze::Log.loggers.each{|l| l.log_levels << :dev } Ramaze.start :adapter => :mongrel ramaze-2012.12.08/examples/basic/0000755000004100000410000000000012140566653016325 5ustar www-datawww-dataramaze-2012.12.08/examples/basic/element.rb0000644000004100000410000000122512140566653020303 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' require 'nagoro' class Page < Nagoro::Element def render %{ examples/element

#{@title}

#{content} } end end class SideBar < Nagoro::Element def render %{ } end end class MainController < Ramaze::Controller map '/' engine :Nagoro def index %{

Hello, World!

} end end Ramaze.start ramaze-2012.12.08/examples/basic/simple.rb0000644000004100000410000000243012140566653020142 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' # A very simple little application, you can simply run it and # point your browser to http://localhost:7000 # # You can change the port by setting # Ramaze.options.adapter.port = 80 # this most likely requires root-privileges though. # This example shows following (requests to the mentioned base-url) : # - simple text-output from the controller [ / ] # - showing you what your request looked like [ /simple ] # - joining two strings [ /join/string1/string2 ] # - join arbitary strings [ /join_all/string1/string2/string3 ... ] # - sum two numbers [ /sum/1/3 ] # - show if you made a POST or GET request [ /post_or_get ] # - How to map your controllers to urls [ /other ] # - Also try out the error-page, just pass something odd ;) class SimpleController < Ramaze::Controller map '/' def index "simple" end def join(first, second) [first, second].join end def join_all *strings strings.join end def sum first, second "#{first.to_i + second.to_i}" end def post_or_get request.request_method end end class OtherController < Ramaze::Controller map '/other' def index "Hello, World from #{self.class.name}" end end Ramaze.start ramaze-2012.12.08/examples/basic/linking.rb0000644000004100000410000000077212140566653020313 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class LinkingController < Ramaze::Controller map '/' def index %{simple link
Help?} end def new "something new!" end def help %{you have help
A Different Controller} end end class LinkToController < Ramaze::Controller map '/link_to' def another %{Back to Original Controller} end end Ramaze.start ramaze-2012.12.08/examples/basic/gestalt.rb0000644000004100000410000000071512140566653020320 0ustar www-datawww-datarequire 'ramaze' class MainController < Ramaze::Controller helper :gestalt def index build do html do head do title "Welcome to Gestalt" end body do h1 "Gestalt reports for duty" p "Feel free to take a look at my source.", "That's what open source is for anyway." a(:href => 'http://ramaze.net'){ 'ramaze.net' } end end end end end Ramaze.start ramaze-2012.12.08/examples/basic/hello.rb0000644000004100000410000000046112140566653017756 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' # Start this example with `ruby hello.rb`. # After startup you will be able to access it at http://localhost:7000/ # This should output "Hello, World!" in your browser. class MainController < Ramaze::Controller def index "Hello, World!" end end Ramaze.start ramaze-2012.12.08/examples/basic/layout.rb0000644000004100000410000000056112140566653020171 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller layout :page provide :html, :engine => :Nagoro def index @title = "Test" "

Hello, World!

" end def page %q{ examples/layout

#@title

#@content } end end Ramaze.start ramaze-2012.12.08/examples/basic/partial.rb0000644000004100000410000000073712140566653020315 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' # This is a small extension to the hello world example, showing how to use the # tag of Nagoro. # # Browse to /more and /even_more class MainController < Ramaze::Controller engine :nagoro def index "Hello, World!" end def more @tail = request[:tail] || 'the standard' 'More of #@tail' end def even_more '' end end Ramaze.start ramaze-2012.12.08/examples/templates/0000755000004100000410000000000012140566653017242 5ustar www-datawww-dataramaze-2012.12.08/examples/templates/template_ezamar.rb0000644000004100000410000000174412140566653022747 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller engine :Ezamar def index %{ #{a('Home',:/)} | #{a(:internal)} | #{a(:external)} } end def internal *args @args = args %q{ Template::Ezamar internal

The internal Template for Ezamar

#{a('Home',:/)}

Here you can pass some stuff if you like, parameters are just passed like this:
#{a("internal/one")}
#{a("internal/one/two/three")}
#{a("internal/one?foo=bar")}

The arguments you have passed to this action are: none #{arg}
#{request.params.inspect}
} end def external *args @args = args end end Ramaze.start :file => __FILE__ ramaze-2012.12.08/examples/templates/template_nagoro.rb0000644000004100000410000000174312140566653022754 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller engine :Nagoro def index %{ #{a('Home',:/)} | #{a(:internal)} | #{a(:external)} } end def internal *args @args = args %q{ Template::Nagoro internal

The internal Template for Nagoro

#{a('Home',:/)}

Here you can pass some stuff if you like, parameters are just passed like this:
#{a("internal/one")}
#{a("internal/one/two/three")}
#{a("internal/one?foo=bar")}

The arguments you have passed to this action are: none #{arg}
#{request.params.inspect}
} end def external *args @args = args end end Ramaze.start :file => __FILE__ ramaze-2012.12.08/examples/templates/template_haml.rb0000644000004100000410000000170112140566653022402 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller engine :Haml def index %{#{a('Home',:/)} | #{a(:internal)} | #{a(:external)}} end def internal *args @args = args @place = :internal @title = "The #@place Template for Haml" %q{ %html %head %title= "Template::Haml #@place" %body %h1= @title = a('Home',:/) %p Here you can pass some stuff if you like, parameters are just passed like this: %br/ = a("#@place/one") %br/ = a("#@place/one/two/three") %br/ = a("#@place/one?foo=bar") %div The arguments you have passed to this action are: - if @args.empty? none - else - @args.each do |arg| %span= arg %div= request.params.inspect } end def external *args @args = args @place = :external @title = "The #@place Template for Haml" end end Ramaze.start :file => __FILE__ ramaze-2012.12.08/examples/templates/template_tenjin.rb0000644000004100000410000000216712140566653022757 0ustar www-datawww-datarequire "rubygems" require "ramaze" class MainController < Ramaze::Controller engine :Tenjin def index %{ #{a('Home',:/)} | #{a(:internal)} | #{a(:external)} } end def internal(*args) @args = args @place = :internal <<'__TENJIN__' Template::Tenjin #{@place}

The #{@place} Template for Tenjin

Home

Here you can pass some stuff if you like, parameters are just passed like this:
#{r(@place, :one)}
#{r(@place, :two, :three)}
#{r(@place, :one, :foo => :bar)}

The arguments you have passed to this action are:
none #{arg}
#{request.params.inspect}
__TENJIN__ end def external(*args) @args = args @place = :external end end Ramaze.start :file => __FILE__ ramaze-2012.12.08/examples/templates/template_remarkably.rb0000644000004100000410000000241412140566653023614 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller engine :Remarkably helper :remarkably def index %{ #{a('Home', :href => r(:/) )} | #{a(:internal,:href => r(:internal) )} | #{a(:external, :href => r(:external) )} } end def internal *args @place = :internal html do head do title "Template::Remarkably internal" end body do h1 "The #@place Template for Remarkably" a("Home", :href => r(:/)) P do text "Here you can pass some stuff if you like, parameters are just passed like this:" br a("#@place/one", :href => r( @place, :one)) br a("#@place/one/two/three", :href => r( @place, :one, :two, :three)) br a("#@place/one?foo=bar", :href => r( @place, :one, :foo => :bar)) br end div do text "The arguments you have passed to this action are:" if args.empty? "none" else args.each do |arg| span arg end end end div request.params.inspect end end end def external *args @args = args @place = :external @request = request end end Ramaze.start :file => __FILE__ ramaze-2012.12.08/examples/templates/template_mustache.rb0000644000004100000410000000272112140566653023275 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller engine :Mustache def index @home = a('Home',:/) @internal = a(:internal) @external = a(:external) %{ {{{home}}} | {{{internal}}} | {{{external}}} } end def internal(*args) set_mustache_variables(:internal, *args) %q{ Template::Mustache internal

{{header}}

{{{link_home}}}

Here you can pass some stuff if you like, parameters are just passed like this:
{{{link_one}}}
{{{link_two}}}
{{{link_three}}}

The arguments you have passed to this action are: {{#args_empty}} none {{/args_empty}} {{#not_empty}} {{#args}} {{arg}} {{/args}} {{/not_empty}}
{{params}}
} end def external *args set_mustache_variables(:external, *args) end private def set_mustache_variables(place, *args) @header = "The #{place} Template for Mustache" @link_home = a('Home', :/) @link_one = a("#{place}/one") @link_two = a("#{place}/one/two/three") @link_three = a("#{place}?foo=Bar") @args = args.map { |arg| {:arg => arg} } @args_empty = args.empty? @not_empty = !@args_empty @params = request.params.inspect end end Ramaze.start :file => __FILE__ ramaze-2012.12.08/examples/templates/template_liquid.rb0000644000004100000410000000251112140566653022750 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller engine :Liquid def index %{ {% anchor "Home" / %} | {% anchor "internal" internal %} | {% anchor "external" external %}} end def internal(*args) set_liquid_variables(:internal, *args) %q{ Template::Liquid internal

{{header}}

{{link_home}}

Here you can pass some stuff if you like, parameters are just passed like this:
{{link_one}}
{{link_two}}
{{link_three}}

The arguments you have passed to this action are: {% if args_empty %} none {% else %} {% for arg in args %} {{arg}} {% endfor %} {% endif %}
{{params}}
} end def external *args set_liquid_variables(:internal, *args) end private def set_liquid_variables(place, *args) @header = "The #{place} Template for Liquid" @link_home = a('Home', :/) @link_one = a("#{place}/one") @link_two = a("#{place}/one/two/three") @link_three = a("#{place}?foo=Bar") @args = args @args_empty = args.empty? @params = request.params.inspect end end Ramaze.start :file => __FILE__ ramaze-2012.12.08/examples/templates/template_markaby.rb0000644000004100000410000000262712140566653023117 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller engine :Markaby helper :markaby def index %{ #{a('Home',:/)} | #{a(:internal)} | #{a(:external)} } end def internal *args options = {:place => :internal, :action => 'internal', :args => args, :request => request, :this => self} mab options do html do head do title "Template::Markaby #@place" end body do h1 "The #@place Template for Markaby" a("Home", :href => R(@this)) p do text "Here you can pass some stuff if you like, parameters are just passed like this:" br a("#@place/one", :href => r(@this, @place, :one)) br a("#@place/one/two/three", :href => r(@this, @place, :one, :two, :three)) br a("#@place/one?foo=bar", :href => r(@this, @place, :one, :foo => :bar)) br end div do text "The arguments you have passed to this action are:" if @args.empty? text "none" else args.each do |arg| span arg end end end div @request.params.inspect end end end.to_s end def external *args @args = args @request = request @place = :external end end Ramaze.start :file => __FILE__ ramaze-2012.12.08/examples/templates/template_erubis.rb0000644000004100000410000000203512140566653022753 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller engine :Erubis def index %{ #{a('Home', :/)} | #{a(:internal)} | #{a(:external)} } end def internal *args @args = args @place = :internal %{ Template::Erubis #@place

The #@place Template for Erubis

<%= a('Home', :/) %>

Here you can pass some stuff if you like, parameters are just passed like this:
<%= a("/#@place/one") %>
<%= a("#@place/two/three") %>
<%= a("#@place/one?foo=bar") %>

The arguments you have passed to this action are: <% if @args.empty? %> none <% else %> <% @args.each do |arg| %> <%= arg %> <% end %> <% end %>
<%= request.params.inspect %>
} end def external *args @args = args @place = :external end end Ramaze.start :file => __FILE__ ramaze-2012.12.08/examples/templates/view/0000755000004100000410000000000012140566653020214 5ustar www-datawww-dataramaze-2012.12.08/examples/templates/view/external.zmr0000644000004100000410000000124712140566653022574 0ustar www-datawww-data Template::Ezamar external

The external Template for Ezamar

#{a('Home',:/)}

Here you can pass some stuff if you like, parameters are just passed like this:
#{a("external/one")}
#{a("external/one/two/three")}
#{a("external/one?foo=bar")}

The arguments you have passed to this action are: none #{arg}
#{request.params.inspect}
ramaze-2012.12.08/examples/templates/view/external.mt0000644000004100000410000000114112140566653022375 0ustar www-datawww-data Template::Mustache external

{{header}}

{{{link_home}}}

Here you can pass some stuff if you like, parameters are just passed like this:
{{{link_one}}}
{{{link_two}}}
{{{link_three}}}

The arguments you have passed to this action are: {{#args_empty}} none {{/args_empty}} {{#not_empty}} {{#args}} {{arg}} {{/args}} {{/not_empty}}
{{params}}
ramaze-2012.12.08/examples/templates/view/external.haml0000644000004100000410000000100112140566653022671 0ustar www-datawww-data%html %head %title= "Template::Haml #@place" %body %h1= @title = a('Home',:/) %p Here you can pass some stuff if you like, parameters are just passed like this: %br/ = a("#@place/one") %br/ = a("#@place/one/two/three") %br/ = a("#@place/one?foo=bar") %div The arguments you have passed to this action are: - if @args.empty? none - else - @args.each do |arg| %span= arg %div= request.params.inspect ramaze-2012.12.08/examples/templates/view/external.rhtml0000644000004100000410000000127512140566653023113 0ustar www-datawww-data Template::Erubis <%=@place%>

The <%=@place%> Template for Erubis

<%= a('Home', :/) %>

Here you can pass some stuff if you like, parameters are just passed like this:
<%= a("/#@place/one") %>
<%= a("#@place/two/three") %>
<%= a("#@place/one?foo=bar") %>

The arguments you have passed to this action are: <% if @args.empty? %> none <% else %> <% @args.each do |arg| %> <%= arg %> <% end %> <% end %>
<%= request.params.inspect %>
ramaze-2012.12.08/examples/templates/view/external.rem0000644000004100000410000000134612140566653022547 0ustar www-datawww-datahtml do head do title "Template::Remarkably #@place" end body do h1 "The #@place Template for Remarkably" a("Home", :href => r(@place)) P do text "Here you can pass some stuff if you like, parameters are just passed like this:" br a("#@place/one", :href => r( @place, :one)) br a("#@place/one/two/three", :href => r( @place, :one, :two, :three)) br a("#@place/one?foo=bar", :href => r( @place, :one, :foo => :bar)) br end div do text "The arguments you have passed to this action are:" if @args.empty? text "none" else args.each do |arg| span arg end end end div @request.params.inspect end end ramaze-2012.12.08/examples/templates/view/external.nag0000644000004100000410000000124712140566653022531 0ustar www-datawww-data Template::Nagoro external

The external Template for Nagoro

#{a('Home',:/)}

Here you can pass some stuff if you like, parameters are just passed like this:
#{a("external/one")}
#{a("external/one/two/three")}
#{a("external/one?foo=bar")}

The arguments you have passed to this action are: none #{arg}
#{request.params.inspect}
ramaze-2012.12.08/examples/templates/view/external.redcloth0000644000004100000410000000102112140566653023556 0ustar www-datawww-datah1. The <%= @place %> Template for RedCloth "Home":<%= r(:/) %> Here you can pass some stuff if you like, parameters are just passed like this:
"<%= @place %>/one":<%= r(@place, :one) %>
"<%= @place %>/two/three":<%= r(@place, :two, :three) %>
"<%= @place %>/one?foo=bar":<%= r(@place, :foo => :bar) %> The arguments you have passed to this action are:
<% if @args.empty? %> none <% else %> <% @args.each do |arg| %> <%= arg %> <% end %> <% end %> <%= request.params.inspect %> ramaze-2012.12.08/examples/templates/view/external.tenjin0000644000004100000410000000137312140566653023253 0ustar www-datawww-data Template::Tenjin #{@place}

The #{@place} Template for Tenjin

Home

Here you can pass some stuff if you like, parameters are just passed like this:
#{r(@place, :one)}
#{r(@place, :two, :three)}
#{r(@place, :one, :foo => :bar)}

The arguments you have passed to this action are:
none #{arg}
#{request.params.inspect}
ramaze-2012.12.08/examples/templates/view/external.mab0000644000004100000410000000136112140566653022520 0ustar www-datawww-datahtml do head do title "Template::Markaby #@place" end body do h1 "The #@place Template for Markaby" a("Home", :href => r(@this)) p do text "Here you can pass some stuff if you like, parameters are just passed like this:" br a("#@place/one", :href => r(@this, @place, :one)) br a("#@place/one/two/three", :href => r(@this, @place, :one, :two, :three)) br a("#@place/one?foo=bar", :href => r(@this, @place, :one, :foo => :bar)) br end div do text "The arguments you have passed to this action are:" if @args.empty? text "none" else args.each do |arg| span arg end end end div @request.params.inspect end end ramaze-2012.12.08/examples/templates/view/external.liquid0000644000004100000410000000111412140566653023244 0ustar www-datawww-data Template::Liquid external

{{header}}

{{homelink}}

Here you can pass some stuff if you like, parameters are just passed like this:
{{link_one}}
{{link_two}}
{{link_three}}

The arguments you have passed to this action are: {% if args_empty %} none {% else %} {% for arg in args %} {{arg}} {% endfor %} {% endif %}
{{params}}
ramaze-2012.12.08/examples/templates/template_redcloth.rb0000644000004100000410000000214612140566653023271 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller engine :RedCloth layout :layout def index @place = :home %{ #{a('Home',:/)} | #{a(:internal)} | #{a(:external)} } end def internal(*args) @place = :internal @args = args <<__REDCLOTH__ h1. The <%= @place %> Template for RedCloth "Home":<%= r(:/) %> Here you can pass some stuff if you like, parameters are just passed like this:
"<%= @place %>/one":<%= r(@place, :one) %>
"<%= @place %>/two/three":<%= r(@place, :two, :three) %>
"<%= @place %>/one?foo=bar":<%= r(@place, :one, :foo => :bar) %> The arguments you have passed to this action are:
<% if @args.empty? %> none <% else %> <% @args.each do |arg| %> <%= arg %> <% end %> <% end %> <%= request.params.inspect %> __REDCLOTH__ end def external(*args) @place = :external @args = args end def layout <<'__HTML__' Template::RedCloth <%= @place %> <%= @content %> __HTML__ end end Ramaze.start :file => __FILE__ ramaze-2012.12.08/examples/misc/0000755000004100000410000000000012140566653016177 5ustar www-datawww-dataramaze-2012.12.08/examples/misc/sequel_scaffolding.rb0000644000004100000410000000207212140566653022362 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' require 'sequel' require 'scaffolding_extensions' # More information on Scaffolding Extensions here: http://scaffolding-ext.rubyforge.org/ DB = Sequel.sqlite # Sequel::Model doesn't support schema creation by default # So we have to load it as a plugin Sequel::Model.plugin :schema class User < Sequel::Model(:user) set_schema do primary_key :id varchar :name text :description end create_table unless table_exists? # Add a couple of users to our database create(:name => 'manveru', :description => 'The first user!') create(:name => 'injekt', :description => 'Just another user') end ScaffoldingExtensions.all_models = [User] class UserController < Ramaze::Controller map '/user' scaffold_all_models :only => [User] end class MainController < Ramaze::Controller def index %{Scaffolding extension enabled for Sequel::Model User. You can access the scaffolded Model at #{a('/user')}} end end Ramaze.start ramaze-2012.12.08/examples/misc/nagoro_element.rb0000644000004100000410000000114112140566653021517 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' class MainController < Ramaze::Controller map '/' engine :Nagoro def index %{

Hello, World!

} end end Nagoro.element 'Page' do |content, attrs| %{ examples/element

#{attrs['title']}

#{content} } end Nagoro.element 'SideBar' do |content, attrs| %{ } end Ramaze.start ramaze-2012.12.08/examples/misc/serve_directory.rb0000644000004100000410000000014412140566653021733 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' Ramaze.start do |mw| mw.run Rack::Directory.new(__DIR__) end ramaze-2012.12.08/examples/misc/css.rb0000644000004100000410000000113112140566653017310 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' # delete cached css after inline template is changed module Ramaze::SourceReloadHooks module_function def after_safe_load file Ramaze::Cache.actions.delete '/css/style.css' if file == __FILE__ end end class CSSController < Ramaze::Controller helper :cache provide :css, :type => 'text/css', :engine => :Sass def style %( body font: family: sans-serif size: 11px margin: 0.5em padding: 1em ) end cache_action :method => 'style' end # http://localhost:7000/css/style.css Ramaze.start :adapter => :mongrel, :port => 7000 ramaze-2012.12.08/examples/misc/facebook.rb0000644000004100000410000001430012140566653020273 0ustar www-datawww-datarequire 'rubygems' require 'ramaze' Ramaze.contrib :facebook # Settings for your facebook app # SERVER: where this ramaze app is running # URL: the apps.facebook.com url to your app # KEY: API key for your app # SECRET: Secret key for your app # ID: Your app's ID (from the about page url) # ADMINS: uids of facebook users that are admins # SESSION: an admin's session key # # These vars are used by the Facebook Helper are are also useful # within your controller and templates. For example, # click here to search # # In addition, set the following options on your app's 'Edit Settings' page: # Callback URL: http://myapp.domain.com:7000/ (trailing slash required) # Canvas Page URL: ramazing # Can your app be added on Facebook: Yes # Who can add your app: Users # Post-Add URL: http://apps.facebook.com/ramazing/install # Post-Remove URL: http://myapp.domain.com:7000/uninstall # Side Nav URL: http://apps.facebook.com/ramazing module Facebook SERVER = 'http://myapp.domain.com:7000' URL = 'http://apps.facebook.com/ramazing' KEY = 'b32f58685c06a7f8107bc7915354bd89' SECRET = 'e0f9........................9429' ID = 2502696782 ADMINS = [ 15601088 ] SESSION = '' end unless defined? Facebook::ID # The facebook helper (included your controller using +helper :facebook+) # defines a +facebook+ object, which is also aliased to +fb+. # # POST parameters sent by the facebook servers can be accessed via fb.params # and also fb[]. Wherever possible, values will be converted to native ruby # types (Time objects, true/false, arrays) # # fb.params = { :api_key => "b32f58685c06a7f8107bc7915354bd89", # :added => true, # :profile_update_time => Mon Oct 15 15:07:28 -0400 2007, # :friends => [1,2,3], # :session_key => "f7bed6aefaa5467b3a6344f2-15601088", # :time => Sat Dec 01 02:02:50 -0500 2007, # :user => 15601088, # :position_fix => false, # :expires => 0, # :in_canvas => true } # # fb[:user] == facebook[:user] == facebook.params[:user] # # The facebook object can also be used to make API calls. Native ruby types (true, false, strings, hashes and arrays) # will be returned. If facebook returns an array with only one element, that element will be returned instead. # # facebook.auth.createToken # => "41b5dc65792ba4bf405faf857a17267c" # fb.users.getInfo :uids => 15601088, :fields => [:name] # => {"name"=>"Aman Gupta", "uid"=>15601088} # fb.profile.setFBML :uid => 15601088, :markup => 'Hi!' # => true # # API calls will use the current viewing users' session key (from fb[:session_key]) if present, # or Facebook::SESSION, which should be set to one of the admin's keys. You can also provide another # session key yourself from your users database: # # fb.feed.publishActionOfUser :session_key => "the user's session key", :title => 'is using Ramaze!' # # Finally, you can use the following facebook object methods: # # facebook.valid? # verify fb_sig, if invalid fb.params will return {} # facebook.redirect '/url' # redirect to /url using # facebook.addurl # return the add url for the current app # facebook.addurl '/url' # add url for app that redirects to /url after successful install class MainController < Ramaze::Controller helper :formatting helper :facebook before { # show some information about current user in logs # INFO Facebook {:user=>15601088, :in_canvas=>true, :added=>true} if fb[:user] # use facebook session_key as session cookie session.session_id = fb[:session_key] if fb[:session_key] Ramaze::Log.info "Facebook " + fb.params.reject{|k,v| k.to_s !~ /^(in|is|user|added|locale|request)/}.inspect else # require_add: redirect to add url # fb.redirect fb.addurl end # suggest setting SESSION key if one is not set, and current user is an admin # INFO Set a default session key: SESSION = 'b3638446fa02466210c49f42-15601088' if Facebook::SESSION.empty? and Facebook::ADMINS.include? fb[:user] Ramaze::Log.info "Set a default session key: SESSION = '#{fb[:session_key]}'" end } def install Ramaze::Log.info "#{fb[:user]} installed app" if request['installed'] == '1' facebook.profile.setFBML :uid => fb[:user], :markup => "Isn't this a great surprise!?" facebook.redirect request['next'] || '/' end def uninstall Ramaze::Log.info "#{fb[:user]} uninstalled app" end def main fb.redirect '/index' unless fb[:user] @userinfo = facebook.users.getInfo :uids => facebook[:user], :fields => [:name, :pic_square] %q( Hey there #{@userinfo['name']}. You look like this: .
You updated your profile #{time_diff fb[:profile_update_time]} ago. You have #{fb[:friends].size} friends.

I know you already logged in, but you should really add this app. You'll get a real nifty surprise on your profile if you do. Now that you added this app, I can access your profile and news feed.
Did you see the cool surprise I left on your profile?

) end def index facebook.redirect '/main' if facebook[:user] %q( This is a great app. Here are some reasons you'll like it:
  • It's on facebook
  • It's written in Ramaze
Login to start using it. Or, to get the full benefit, you should add it so we have access to your newsfeed and can add a box to your profile. ) end def layout %q( Add App
#@content
) end layout :layout end Ramaze.start :adapter => :mongrel ramaze-2012.12.08/examples/misc/rapp.rb0000644000004100000410000000242112140566653017465 0ustar www-datawww-data# Ramaze version of the merb tutorial # http://www.socialface.com/slapp/ require 'rubygems' require 'ramaze' require 'sequel' require 'abbrev' DB = Sequel.sqlite class Post < Sequel::Model plugin :schema plugin :hook_class_methods set_schema{ primary_key :id; time :created_at; text :text } before_create{ self.created_at ||= Time.now } create_table end %w[Ramaze Rocks].abbrev.keys.sort.each{|text| Post.create(:text => text) } class MainController < Ramaze::Controller def index @posts = Post.order(:created_at.desc).first(10) <<-'TEMPLATE'.strip Rapp

Welcome to Rapp

A minimal chat wall

Recent Posts:

#{post.text}

#{post.created_at}

Post Something:

TEMPLATE end def create Post.create(:text => request[:text]) redirect r(:/) end end Ramaze.start ramaze-2012.12.08/examples/misc/memleak_detector.rb0000644000004100000410000000140212140566653022025 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'ramaze' # This little app helps me track down memory-leaks in Ramaze. class MainController < Ramaze::Controller def index "Hello, World!" end end def memcheck(top = 10, klass = Object) puts os = Hash.new(0) ObjectSpace.each_object(klass){|o| yield(os, o) } pp sorted = os.sort_by{|k,v| -v }.first(top) puts return sorted rescue Exception => ex puts ex ensure GC.start end Thread.new do loop do # memcheck(10, String){|os, o| os[o] += 1 } memcheck{|os, o| os[o.class] += 1 } sleep 5 end end Ramaze::Log.loggers.clear Ramaze.start :adapter => :webrick, :mode => :live ramaze-2012.12.08/examples/misc/ramaise.rb0000644000004100000410000000632012140566653020146 0ustar www-datawww-data# Ramaise, the Ramaze version of Reprise, a minimal hAtom blog # # http://redflavor.com/reprise.rb # http://www.rubyinside.com/reprise-a-ruby-powered-blogging-app-in- # 100-lines-including-templates-646.html # # Usage: # # 1. gem install ramaze haml bluecloth rubypants -y # 2. wget http://darcs.ramaze.net/ramaze/examples/ramaise.rb # 3. mkdir entries # 4. vi entries/YYYY.MM.DD.Title.Goes.Here # 5. ruby ramaise.rb %w(rubygems ramaze bluecloth rubypants haml).each{|lib| require lib } class BlogPost DIR = __DIR__(:entries) def initialize filename raise 'Invalid BlogPost filename' unless File.exists?(filename) @filename, filename = filename, File.basename(filename) @date = Date.strptime(filename, '%Y.%m.%d').to_s @title = filename[11..-1].tr('.', ' ') end def body RubyPants.new(BlueCloth.new(File.read(@filename)).to_html).to_html end def slug @slug ||= title.gsub(/[^\w\s-]/, '').gsub(/\s+/, '-').downcase end attr_reader :date, :title class << self include Enumerable def each Dir[DIR/'*'].sort.reverse.each do |file| yield BlogPost.new(file) end end def [] key BlogPost.find{|post| post.slug == key } end end end class MainController < Ramaze::Controller TITLE = 'Ramaise' AUTHOR = { :name => 'Aman Gupta', :url => 'http://ramaze.net' } engine :Haml def index slug = nil if slug.nil? @posts = BlogPost.collect raise Ramaze::Error::NoAction, 'No blog posts found, create entries/YYYY.MM.DD.My.First.Blog.Post' unless @posts.any? else raise Ramaze::Error::NoAction, 'Invalid blog post' unless post = BlogPost[slug] @title = post.title @posts = [ post ] end %( %h1 - if @title %a{ :href => '/' } #{TITLE} - else #{TITLE} - @posts.each do |post| .hentry %h2 %abbr.updated{ :title => Time.parse(post.date).iso8601 }= post.date %a.entry-title{ :href => '/'+post.slug, :rel => 'bookmark' }= post.title .entry-content= post.body ).unindent end def error %( %h1 #{TITLE}: Resource not found %h2= Ramaze::Dispatcher::Error.current.message + '.' Go back to the %a{ :href => '/' } the front page. ).unindent end def layout %( !!! %html %head %title #{TITLE} - if @title = ': ' + @title %style{ :type => 'text/css' } :sass body font-size: 90% line-height: 1.4 width: 94% margin: auto abbr border: 0 .entry-content -moz-column-width: 30em -moz-column-gap: 1.5em -webkit-column-width: 30em -webkit-column-gap: 1.5em h2 border-bottom: 0.05em solid #999 %body = @content %address.author.vcard %a.url.fn{ :href => '#{AUTHOR[:url]}' } #{AUTHOR[:name]} ).unindent end layout :layout end Ramaze.start :sessions => false #, :adapter => :mongrel, :port => 3000 ramaze-2012.12.08/README.md0000644000004100000410000001116412140566653014710 0ustar www-datawww-data# Ramaze Ramaze is a very simple and straight-forward web-framework. The philosophy of it could be expressed in a mix of KISS and POLS, trying to make simple things simple and complex things possible. This of course is nothing new to anyone who knows some Ruby, but is often forgotten in a chase for new functionality and features. Ramaze only tries to give you the ultimate tools, but you have to use them yourself to achieve perfect custom-tailored results. Another one of the goals during development of Ramaze was to make every part as modular and therefore reusable as possible, not only to provide a basic understanding after the first glance, but also to make it as simple as possible to reuse parts of the code. The original purpose of Ramaze was to act as a kind of framework to build web-frameworks, this was made obsolete by the introduction of Rack, which provides this feature at a better level without trying to enforce any structural layout of the resulting framework. Today Ramaze serves as a framework for those who want to develop their projects in their own way rather than being forced to work in a way that the framework (and its creators) define. It tries not to make any assumptions and more importantly: it puts you back in control of your code. An example of this is the default file structure of new Ramaze projects. Out of the box a new project uses the MVC pattern. The cool thing about Ramaze however is that you're not forced to use this pattern. If you prefer HMVC, PAC or something else you can simply apply it. Another example is the use of a database toolkit. Ramaze does not ship with one for a very simple reason: nobody likes the same toolkit. Some people prefer Sequel, others use Datamapper. With Ramaze you can use any tool you like. Installing Ramaze is as easy as the following command: $ gem install ramaze For more information see the chapter {file:installation Installation}.

Note: if you spot any mistakes made such as spelling errors or links not working feel free to report them on the mailing list, in the IRC channel or by submitting a bug at the bugtracker.

## Quick Example While Ramaze applications are usually spread across multiple directories for controllers, models and views one can quite easily create a very basic application in just a single file: require 'ramaze' class MyController < Ramaze::Controller map '/' def index return "Hello, Ramaze!" end end Ramaze.start Once this is saved in a file (you can also run this from IRB) simply execute it using the Ruby binary: $ ruby hello_ramaze.rb This starts a WEBRick server listening on localhost:7000. ## Requirements * Innate (which in turn requires Rack). * A Ruby implementation based on Ruby 1.8 or newer (1.9.2, Rubinius, etc). * A Rack server such as Thin or Unicorn. * Basic knowledge of Ruby. ## License Ramaze is licensed under the MIT license, a copy of this license can be found in ``guide/LICENSE``. If you happen to view this README using YARD (this is what you see on ) you can also view this license by clicking the "Files" button at the top right and then clicking on the "LICENSE" item. ## Community * \#ramaze on the Freenode IRC network * [Mailing list][mailing list] * [Website][website] When joining the IRC channel you don't have to be afraid to ask a question, just ask it and (hopefully) you'll get the answer you're looking for. However, keep in mind that most of us are located in different timezones so it may sometimes take a while before you get a reply. ## Chapters If you're viewing this file in your editor or from Github it's likely that the table of contents isn't rendered. You can find all these files in the ``guide/`` directory. * {file:general/installation Installation} * {file:general/upgrading Upgrading} * {file:general/principles Principles} * {file:general/special_thanks Special Thanks} * {file:general/contributing Contributing To Ramaze} * {file:general/configuration Configuration} * {file:general/ramaze_command Ramaze Command} * {file:general/controllers Controllers} * {file:general/models Models} * {file:general/views Views} * {file:general/helpers Helpers} * {file:general/middlewares Rack Middlewares} * {file:general/routes Routes} * {file:general/sessions Sessions} * {file:general/cache Caching Data} * {file:general/logging Logging Information} * {file:general/testing Testing Ramaze} [mailing list]: https://groups.google.com/forum/#!forum/ramaze [website]: http://ramaze.net/ ramaze-2012.12.08/Rakefile0000644000004100000410000000072612140566653015100 0ustar www-datawww-datarequire 'rubygems' require 'rake' require 'date' require 'time' require 'rubygems/package_task' PROJECT_SPECS = Dir.glob(File.expand_path('../spec/ramaze/**/*.rb', __FILE__)) GEMSPEC = Gem::Specification::load( File.expand_path('../ramaze.gemspec', __FILE__) ) Gem::PackageTask.new(GEMSPEC) do |pkg| pkg.need_tar = false pkg.need_zip = false end Dir.glob(File.expand_path('../tasks/*.rake', __FILE__)).each do |task| import task end task :default => :bacon ramaze-2012.12.08/spec/0000755000004100000410000000000012140566653014360 5ustar www-datawww-dataramaze-2012.12.08/spec/snippets/0000755000004100000410000000000012140566653016225 5ustar www-datawww-dataramaze-2012.12.08/spec/snippets/string/0000755000004100000410000000000012140566653017533 5ustar www-datawww-dataramaze-2012.12.08/spec/snippets/string/camel_case.rb0000644000004100000410000000134512140566653022137 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../lib/ramaze/spec/helper/snippets', __FILE__) describe "String#camel_case" do it 'should camelize snake_case' do 'foo_bar'.camel_case.should == 'FooBar' end it 'should camelize snake_case_long' do 'foo_bar_baz'.camel_case.should == 'FooBarBaz' end it 'should ignore starting _' do '_foo_bar_baz'.camel_case.should == 'FooBarBaz' end it 'should ignore trailing _' do 'foo_bar_baz_'.camel_case.should == 'FooBarBaz' end it 'messes up existing CamelCase' do 'foo_barBaz'.camel_case.should == 'FooBarbaz' end end ramaze-2012.12.08/spec/snippets/string/color.rb0000644000004100000410000000102512140566653021174 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../lib/ramaze/spec/helper/snippets', __FILE__) describe 'String#color' do it 'should define methods to return ANSI strings' do %w[reset bold dark underline blink negative black red green yellow blue magenta cyan white].each do |m| "string".respond_to? m "string".send(m).should.match(/\e\[\d+mstring\e\[0m/) end end end ramaze-2012.12.08/spec/snippets/string/snake_case.rb0000644000004100000410000000140212140566653022151 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../lib/ramaze/spec/helper/snippets', __FILE__) describe "String#snake_case" do it 'should snake_case a camelCase' do 'CamelCase'.snake_case.should == 'camel_case' end it 'should snake_case a CamelCaseLong' do 'CamelCaseLong'.snake_case.should == 'camel_case_long' end it 'will keep existing _' do 'Camel_Case'.snake_case.should == 'camel__case' end it 'should replace spaces' do 'Linked List'.snake_case.should == 'linked_list' end it 'should group uppercase words together' do 'CSSController'.snake_case.should == 'css_controller' end end ramaze-2012.12.08/spec/snippets/string/unindent.rb0000644000004100000410000000161012140566653021702 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../lib/ramaze/spec/helper/snippets', __FILE__) describe "String#unindent" do it "should remove indentation" do %( hello how are you doing ).ui.should == \ %(hello how are you doing) end it 'should not break on a single line' do 'word'.unindent.should == 'word' end it 'should find the first line with indentation' do %( hi there bob).ui.should == \ %(hi there bob) end it 'should have destructive version' do str = %( 1\n 2\n 3) str.ui! str.should == %(1\n 2\n3) end it 'should use indentation from the last line if first line is not indented' do %(a{ abc }).ui.should == %(a{\n abc\n}) end end ramaze-2012.12.08/spec/snippets/ramaze/0000755000004100000410000000000012140566653017504 5ustar www-datawww-dataramaze-2012.12.08/spec/snippets/ramaze/lru_hash.rb0000644000004100000410000000505412140566653021642 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../lib/ramaze/spec/helper/snippets', __FILE__) describe LRU = Ramaze::LRUHash do describe 'without restrictions' do it 'fetches via #fetch' do lru = LRU.new lambda{ lru.fetch(:a) }.should.raise(LRU::KeyError).message == "key not found: :a" lru.fetch(:a, :b).should == :b lru.fetch(:a).should == :b lru.fetch(:c){|key| key.to_s }.should == 'c' lru.fetch(:c).should == 'c' end it 'stores and retrieves values via #[]= and #[]' do lru = LRU.new lru[:a].should == nil lru[:a] = :b lru[:a].should == :b end end describe 'with max_count restriction' do it 'stores and retrieves values via #[]= and #[]' do lru = LRU.new(:max_count => 2) # store the allowed two lru[:a] = :b lru[:c] = :d # overflow by one lru[:e] = :f # first content must be gone lru.key?(:a).should == false # access :c to keep it around lru[:c] lru[:g] = :h lru.key?(:c).should == true lru.key?(:e).should == false end it 'should keep some statistics' do lru = LRU.new(:max_count => 2) lru.statistics.should == {:size => 0, :count => 0, :hits => 0, :misses => 0} lru[:a] = :b lru.statistics.should == {:size => 5, :count => 1, :hits => 0, :misses => 0} lru[:a] = :b lru.statistics.should == {:size => 5, :count => 1, :hits => 0, :misses => 0} lru[:c] = :d lru.statistics.should == {:size => 10, :count => 2, :hits => 0, :misses => 0} lru[:c] lru.statistics.should == {:size => 10, :count => 2, :hits => 1, :misses => 0} lru[:d] lru.statistics.should == {:size => 10, :count => 2, :hits => 1, :misses => 1} lru[:e] = :f lru.statistics.should == {:size => 10, :count => 2, :hits => 1, :misses => 1} lru[:a] lru.statistics.should == {:size => 10, :count => 2, :hits => 1, :misses => 2} lru.delete :e lru.statistics.should == {:size => 5, :count => 1, :hits => 1, :misses => 2} lru[:a] = 'foobar' s = lru.statistics s.delete(:size) # Differs on 1.8/1.9 s.should == {:count => 2, :hits => 1, :misses => 2} end end # TODO: Still missing # :[], :[]=, :clear, :delete, :each_key, :each_pair, :each_value, :empty?, # :expire, :fetch, :index, :key?, :keys, :length, :size, :statistics, :store, # :to_hash, :value?, :values end ramaze-2012.12.08/spec/snippets/object/0000755000004100000410000000000012140566653017473 5ustar www-datawww-dataramaze-2012.12.08/spec/snippets/object/__dir__.rb0000644000004100000410000000144512140566653021376 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../lib/ramaze/spec/helper/snippets', __FILE__) describe '__DIR__' do # this is hardly exhaustive, but better than nothing it 'should report the directory of the current file' do __DIR__.should == File.dirname(File.expand_path(__FILE__)) end should 'join passed arguments and prefix with directory of current file' do __DIR__(:foo).should == File.join(File.dirname(File.expand_path(__FILE__)), 'foo') __DIR__('foo/bar').should == File.join(File.dirname(File.expand_path(__FILE__)), 'foo/bar') __DIR__(:foo, :bar).should == File.join(File.dirname(File.expand_path(__FILE__)), 'foo/bar') end end ramaze-2012.12.08/spec/examples/0000755000004100000410000000000012140566653016176 5ustar www-datawww-dataramaze-2012.12.08/spec/examples/element.rb0000644000004100000410000000067612140566653020165 0ustar www-datawww-datarequire File.expand_path('../../../spec/helper', __FILE__) spec_require 'nagoro' require File.expand_path('../../../examples/basic/element', __FILE__) describe 'Element' do behaves_like :rack_test it '/' do r = get('/').body r.should.include('examples/element') r.should.include('

Test

') r.should.include('something') r.should.include('Hello, World!') end end ramaze-2012.12.08/spec/examples/simple.rb0000644000004100000410000000142412140566653020015 0ustar www-datawww-datarequire File.expand_path('../../../spec/helper', __FILE__) require File.expand_path('../../../examples/basic/simple', __FILE__) describe 'Simple' do behaves_like :rack_test def check(url) response = get(url) response.status.should == 200 response.body end it '/' do check('/').should == 'simple' end it '/join/foo/bar' do check('/join/foo/bar').should == 'foobar' end it '/join/bar/baz' do check('/join/bar/baz').should == 'barbaz' end it '/join_all' do check('/join_all/a/b/c/d/e/f').should == 'abcdef' end it '/sum' do check('/sum/1/2').should == '3' end it '/post_or_get' do check('/post_or_get').should == 'GET' end it '/other' do check('/other').should == "Hello, World from OtherController" end end ramaze-2012.12.08/spec/examples/todolist.rb0000644000004100000410000000163412140566653020370 0ustar www-datawww-datarequire File.expand_path('../../../spec/helper', __FILE__) require File.expand_path('../../../examples/app/todolist/start', __FILE__) TodoList::Task.create(:title => 'do the dishes') TodoList::Task.create(:title => 'build an awesome Ramaze app') describe "Todolist app example" do behaves_like :rack_test it "should list tasks" do r = get('/').body r.should.include('do the dishes') r.should.include('build an awesome Ramaze app') end it "should close a task" do get('/close/do+the+dishes') r = get('/').body r.should.include(' Done ') end it "should delete a task" do get('/delete/build+an+awesome+Ramaze+app') r = get('/').body r.should.not.include("build an awesome Ramaze app") end it "should open a task" do get('/open/do+the+dishes') r = get('/').body r.should.include(' Pending ') end end ramaze-2012.12.08/spec/examples/css.rb0000644000004100000410000000061212140566653017312 0ustar www-datawww-datarequire File.expand_path('../../../spec/helper', __FILE__) spec_require 'haml' require File.expand_path('../../../examples/misc/css', __FILE__) describe 'CSSController' do behaves_like :rack_test def req(path) r = get(path); [r.content_type, r.body] end it 'should cache generated css' do lambda{ req('/css/style.css') }. should.not.change{ req('/css/style.css') } end end ramaze-2012.12.08/spec/examples/linking.rb0000644000004100000410000000072312140566653020160 0ustar www-datawww-datarequire File.expand_path('../../../spec/helper', __FILE__) require File.expand_path('../../../examples/basic/linking', __FILE__) describe 'Linking' do behaves_like :rack_test it 'should provide a link to help' do r = get('/').body r.should.include('Help?') end it 'should provide a link to another controller' do r = get('/help').body r.should.include('A Different Controller') end end ramaze-2012.12.08/spec/examples/hello.rb0000644000004100000410000000040512140566653017625 0ustar www-datawww-datarequire File.expand_path('../../../spec/helper', __FILE__) require File.expand_path('../../../examples/basic/hello', __FILE__) describe 'Hello' do behaves_like :rack_test it 'serves the index page' do get('/').body.should == 'Hello, World!' end end ramaze-2012.12.08/spec/examples/caching.rb0000644000004100000410000000056612140566653020126 0ustar www-datawww-datarequire File.expand_path('../../../spec/helper', __FILE__) require File.expand_path('../../../examples/helpers/cache', __FILE__) describe 'Caching' do behaves_like :rack_test it '/' do 3.times do lambda{ get('/') }.should.not.change{ get('/').body } end 3.times do lambda{ get('/invalidate') }.should.change{ get('/').body } end end end ramaze-2012.12.08/spec/examples/templates/0000755000004100000410000000000012140566653020174 5ustar www-datawww-dataramaze-2012.12.08/spec/examples/templates/template_ezamar.rb0000644000004100000410000000071012140566653023671 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/spec/helper/template_examples' spec_require 'ezamar' require File.expand_path('../../../../examples/templates/template_ezamar', __FILE__) describe 'Template Ezamar' do behaves_like :template_spec spec_template 'Ezamar' end ramaze-2012.12.08/spec/examples/templates/template_nagoro.rb0000644000004100000410000000071012140566653023677 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/spec/helper/template_examples' spec_require 'nagoro' require File.expand_path('../../../../examples/templates/template_nagoro', __FILE__) describe 'Template Nagoro' do behaves_like :template_spec spec_template 'Nagoro' end ramaze-2012.12.08/spec/examples/templates/template_haml.rb0000644000004100000410000000070012140566653023332 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/spec/helper/template_examples' spec_require 'haml' require File.expand_path('../../../../examples/templates/template_haml', __FILE__) describe 'Template Haml' do behaves_like :template_spec spec_template 'Haml' end ramaze-2012.12.08/spec/examples/templates/template_tenjin.rb0000644000004100000410000000071012140566653023701 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/spec/helper/template_examples' spec_require 'tenjin' require File.expand_path('../../../../examples/templates/template_tenjin', __FILE__) describe 'Template Tenjin' do behaves_like :template_spec spec_template 'Tenjin' end ramaze-2012.12.08/spec/examples/templates/template_remarkably.rb0000644000004100000410000000074512140566653024553 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/spec/helper/template_examples' spec_require 'remarkably/engines/html' require File.expand_path('../../../../examples/templates/template_remarkably', __FILE__) describe 'Template Remarkably' do behaves_like :template_spec spec_template 'Remarkably' end ramaze-2012.12.08/spec/examples/templates/template_mustache.rb0000644000004100000410000000072012140566653024224 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/spec/helper/template_examples' spec_require 'mustache' require File.expand_path('../../../../examples/templates/template_mustache', __FILE__) describe 'Template Mustache' do behaves_like :template_spec spec_template 'Mustache' end ramaze-2012.12.08/spec/examples/templates/template_liquid.rb0000644000004100000410000000071012140566653023701 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/spec/helper/template_examples' spec_require 'liquid' require File.expand_path('../../../../examples/templates/template_liquid', __FILE__) describe 'Template Liquid' do behaves_like :template_spec spec_template 'Liquid' end ramaze-2012.12.08/spec/examples/templates/template_markaby.rb0000644000004100000410000000104112140566653024036 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/spec/helper/template_examples' # spec_require 'markaby' # require File.expand_path('../../../../examples/templates/template_erubis', __FILE__) describe 'Template Markaby' do # behaves_like :template_spec # spec_template 'Markaby' it("isn't yet implemented"){ should.flunk('needed Ramaze::View::Markaby') } end ramaze-2012.12.08/spec/examples/templates/template_erubis.rb0000644000004100000410000000071012140566653023703 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/spec/helper/template_examples' spec_require 'erubis' require File.expand_path('../../../../examples/templates/template_erubis', __FILE__) describe 'Template Erubis' do behaves_like :template_spec spec_template 'Erubis' end ramaze-2012.12.08/spec/examples/misc/0000755000004100000410000000000012140566653017131 5ustar www-datawww-dataramaze-2012.12.08/spec/examples/misc/sequel_scaffolding.rb0000644000004100000410000000101312140566653023306 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) require File.expand_path('../../../../examples/misc/sequel_scaffolding', __FILE__) describe 'Sequel Scaffolding Extensions' do behaves_like :rack_test it 'should provide a link to manage users' do r = get('/user').body r.should.include('User') end it 'should display users in our database' do r = get('/user/browse_user').body r.should.include('manveru') r.should.include('injekt') end endramaze-2012.12.08/spec/helper.rb0000644000004100000410000000060512140566653016165 0ustar www-datawww-dataif caller_line = caller.grep(%r!spec/ramaze/!).first caller_file = caller_line.split(':', 2).first caller_root = File.dirname(caller_file) $0 = caller_file end require File.expand_path('../../lib/ramaze/spec/bacon', __FILE__) Ramaze.options.roots = [caller_root] if caller_root module Ramaze BINPATH = __DIR__('../bin/ramaze') BIN_APP = __DIR__('ramaze/bin/app') end ramaze-2012.12.08/spec/ramaze/0000755000004100000410000000000012140566653015637 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/app/0000755000004100000410000000000012140566653016417 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/app/location.rb0000644000004100000410000000151512140566653020556 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) module SpecBlog class Controller < Ramaze::Controller map nil, :blog app.location = '/' end class Posts < Controller map '/posts' def index 'The Blog Posts' end end end module SpecWiki class Controller < Ramaze::Controller map nil, :wiki app.location = '/wiki' end class Pages < Controller map '/pages' def index 'The Wiki Page' end end end describe Ramaze::App do behaves_like :rack_test it "Doesn't set location for app automatically" do get('/wiki/pages').body.should == 'The Wiki Page' get('/posts').body.should == 'The Blog Posts' end end ramaze-2012.12.08/spec/ramaze/view.rb0000644000004100000410000000134612140566653017142 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../spec/helper', __FILE__) module Ramaze module View module MyEngine def self.call(action, string) return string, 'application/x-ruby' end end register View::MyEngine.name, :my end end class SpecView < Ramaze::Controller map '/' engine :MyEngine def index 'Hello, World!' end end describe Ramaze::View do behaves_like :rack_test it 'uses MyEngine' do got = get('/') got.status.should == 200 got['Content-Type'].should == 'application/x-ruby' got.body.should == 'Hello, World!' end end ramaze-2012.12.08/spec/ramaze/dispatcher/0000755000004100000410000000000012140566653017765 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/dispatcher/directory.rb0000644000004100000410000000337112140566653022322 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'nokogiri' Ramaze.middleware(:spec) do run Rack::ETag.new( Rack::ConditionalGet.new(Rack::Directory.new(__DIR__('public'))), 'public' ) end describe 'Directory listing' do behaves_like :rack_test @hierarchy = %w[ /test/deep/hierarchy/one.txt /test/deep/hierarchy/two.txt /test/deep/three.txt /test/deep/four.txt /test/five.txt /test/six.txt ] @hierarchy.each do |path| FileUtils.mkdir_p(__DIR__(:public, File.dirname(path))) FileUtils.touch(__DIR__(:public, path)) end Ramaze.map('/', lambda{|env| [404, {}, ['not found']]}) Ramaze.recompile_middleware(:spec) def build_listing(path) get('path').body end def check(url, title, list) got = get(url) got.status.should == 200 got['Content-Type'].should == 'text/html; charset=utf-8' doc = Nokogiri::HTML(got.body) doc.at(:title).inner_text.should == title doc.css('td.name a').map{|a| [a[:href], a.inner_text] }.should == list end should 'dry serve root directory' do files = [ ["../", "Parent Directory"], ["/favicon.ico", "favicon.ico"], ["/file+name.txt", "file name.txt"], ["/test/", "test/"], ["/test_download.css", "test_download.css"] ] check '/', '/', files end should 'serve hierarchies' do files = [ ["../", "Parent Directory"], ["/test/deep/", "deep/"], ["/test/five.txt", "five.txt"], ["/test/six.txt", "six.txt"] ] check '/test', '/test', files end FileUtils.rm_rf(__DIR__('public/test')) end ramaze-2012.12.08/spec/ramaze/dispatcher/file.rb0000644000004100000410000000356112140566653021236 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) # This spec more or less tries to ensure that we integrate with rack and # rack-contrib in regards to static file serving. spec_require 'rack/contrib' Ramaze.middleware(:spec) do use Rack::ConditionalGet use Rack::ETag run Ramaze.core end class Main < Ramaze::Controller map '/' def index "nothing" end end describe 'Serving static files' do behaves_like :rack_test Ramaze.recompile_middleware :spec it 'serves from public root' do css = File.read(__DIR__('public/test_download.css')) get '/test_download.css' last_response.body.should === css last_response.status.should === 200 end it 'serves files with spaces' do get '/file%20name.txt' last_response.status.should === 200 last_response.body.should === 'hi' end it 'sends ETag for string bodies' do get '/' last_response['ETag'].size.should > 1 end it 'sends Last-Modified for file bodies' do get '/test_download.css' mtime = File.mtime(__DIR__('public/test_download.css')) last_response['Last-Modified'].should == mtime.httpdate end it 'respects ETag with IF_NONE_MATCH' do get '/' etag = last_response['ETag'] etag.should.not.be.nil header 'IF_NONE_MATCH', etag get '/' last_response.status.should === 304 last_response.body.should === '' end it 'respects Last-Modified with IF_MODIFIED_SINCE' do get '/test_download.css' mtime = last_response['Last-Modified'] mtime.nil?.should === false header 'IF_NONE_MATCH' , nil header 'IF_MODIFIED_SINCE', mtime get '/test_download.css' last_response.status.should === 304 last_response.body.should === '' end end ramaze-2012.12.08/spec/ramaze/dispatcher/public/0000755000004100000410000000000012140566653021243 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/dispatcher/public/file name.txt0000644000004100000410000000000212140566653023614 0ustar www-datawww-datahiramaze-2012.12.08/spec/ramaze/dispatcher/public/test_download.css0000644000004100000410000000460212140566653024625 0ustar www-datawww-data/*############################################################# * Name: Light * Date: 2006-08-20 * Description: Bright and smooth. * Author: Viktor Persson * URL: http://templates.arcsin.se * * Feel free to use and modify but please provide credits. * #############################################################*/ /* standard elements */ { margin: 0; padding: 0; } a { color: #567; } a:hover { color: #28E; } body { background: #F2F2F2 url(/media/bg.gif) repeat-y center top; color: #555A60; font: normal 62.5% "Lucida Sans Unicode",sans-serif; margin: 0; } p,cite,code,ul { font-size: 1.0em; padding-bottom: 1.2em; } h1 { font-size: 1.4em; margin-bottom: 4px; } li { list-style: url(/media/li.gif); margin-left: 18px; } code { background: url(/media/bgcode.gif); border: 1px solid #F6F6F6; color: #666; display: block; font: normal 1.1em "Lucida Sans Unicode",serif; margin-bottom: 12px; padding: 8px 10px; white-space: pre; } cite { background: url(/media/quote.gif) no-repeat; color: #456; display: block; font: normal 1.4em "Lucida Sans Unicode",serif; padding-left: 28px; } h1,h2,h3 { color: #579; padding-top: 6px; } * /* misc */ .clearer { clear: both; } /* structure */ .container { margin: 0 auto; width: 730px; } /* title */ .title { float: left; margin-top: 22px; text-align: center; width: 220px; } .title h1 { font: normal 2em Verdana,sans-serif; } .title h2 { color: #999; font: normal 1.1em Verdana,sans-serif; } /* navigation */ .navigation { background: url(/media/holder.jpg) no-repeat; height: 100px; padding: 0 16px; } .navigation a { border-left: 1px solid #DDD; border-right: 1px solid #FFF; color: #89A; float: right; font: bold 1.2em "Trebuchet MS",sans-serif; margin-top: 9px; padding: 58px 18px 8px; text-align: center; text-decoration: none; } .navigation a:hover { background: #FFF url(/media/navhover.gif) repeat-x; color: #28E; padding: 56px 18px 10px; } /* holders */ .holder { background: url(/media/bgholder.jpg) repeat-y; padding: 0 32px; } .holder_top,.footer { clear: both; background: url(/media/holder.jpg) no-repeat; height: 40px; } /* footer */ .footer { background-position: left bottom; color: #666; font-size: 1.1em; text-align: center; } form { text-align: right; } form input { width: 95%; } form textarea { width: 95%; height: 30em; } ramaze-2012.12.08/spec/ramaze/dispatcher/public/favicon.ico0000644000004100000410000000706612140566653023375 0ustar www-datawww-datah& ( @7>0.v`e C -joUSoEM,*FDALSf'$4]E?=^f`twTU@?-6!|..4N/310cag*7*J?;@LEu6gm5>0>NNb:9rlAGOO!'q"4 R ( [DL)1r*6 8^(2.7NB39[`8@70\OLz%*82h'/ J#0/8!.W'+7;B)5$+*1Z`QPh",!o$wBelH&/Ul'7* 4&6%-*/7VZ$+s&3LNg(3*4^&0Q%q&3'RPp!+Fv*6&%2(5/_'5!z&tLG@Z GX' ,*)7T(8+5#,!*'6pt"|&4(4(2(8%.Y&3('YI&N8^y=bcvEZ,s! ? -Fyu%_a}W> HTo<](Q$d{KU~A|[er@ig2;*hxf{Dk0#\jBp" : Gq47wmR+Jt3l'VS)X/Pz1CnLO` 95M.6( @CB@@k^c* Kt| 0->DC:G|a`_N!4%#'\YY*1fIclML/.}vne/:nI9|sMU)4-93>^Yv{70]JB~8@el 8%j`OU$,nkq$!FU")CCwm"-LQBB[]YJSmo;6w85q:@7<ML.3.,K05k),mc277:NHEBCFBKLB7?ddMBr$EOZV-2Z %v:AggFN?#N]EPUU]"4de#j*6!+*485-6V /3(8jgc'.e-+3-XJ?67dH!1x/89=)0"*Y^.5+DN.+m(/7}PY$Z/5^'3HK+'Y=EN$AG)7#-_'360g9HAH C;m1;#/*:!v%258#21;%)tE B$(1SPAIQQGH9@33y Q)&Jj)3}1<2-b'65..G.:2<')=?_f,,)_'50/28LCy#+@P(6 /97r'0%1 =k-1"m%7)(^HIY!+hAAbXM[TdCj) o@֖-;O oOʫ@C)a))s'y2"e{yp`ޯj)UN3,z`)kò8!Z gg*-)`O8q&gC_î uv鯢J)P)O<(p??o/˫88^뺋6uj3~ԥD!O~ʫN@!n8C` )W`)މ N}4nÔO$ 7+?)jjÅvN4C@ *CN`|C)ԫNN׭47O- ԫcUNڮO jfNҮCWx#iN8F9a|C"?~1NG|af\RN3QÔ*UNS*VVr4m|*H8> ܀t8ަ$>0V45o8>00r w=̎?o00L塚>BBYI.]00I %KIl:E??ramaze-2012.12.08/spec/ramaze/controller/0000755000004100000410000000000012140566653020022 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/controller/mapping.rb0000644000004100000410000000332512140566653022005 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) describe 'Controller::generate_mapping' do def gen(klass) Ramaze::Controller::generate_mapping(klass) end it 'maps ::ClassController to /class' do gen('ClassController').should == '/class' end it 'maps ::CamelCaseController to /camel_case' do gen('CamelCaseController').should == '/camel_case' end it 'maps Module::ClassController to /module/class' do gen('Module::ClassController').should == '/module/class' end it 'maps Module::MainController to /module/' do gen('Module::MainController').should == '/module/' end it 'maps Class to /class' do gen('Class').should == '/class' end it 'maps Module::Class to /module/class' do gen('Module::Class').should == '/module/class' end it 'maps Module::Module::Class to module/module/class' do gen('Module::Module::Class').should == '/module/module/class' end it 'maps Module::Module::MainController to module/module/' do gen('Module::Module::MainController').should == '/module/module/' end it "maps MainController to '/'" do gen('MainController').should == '/' end it "doesn't map ::Controller" do gen('Controller').should == nil end it "doesn't map Module::Controller" do gen('Module::Controller').should == nil end it "doesn't map anonymous classes" do gen(Class.new.name).should == nil end it "respects custom irregular mappings" do Ramaze::Controller::IRREGULAR_MAPPING['Snake'] = 'snake_on_a_plane' gen('Some::Snake').should == '/some/snake_on_a_plane' end end ramaze-2012.12.08/spec/ramaze/controller/resolve.rb0000644000004100000410000000154512140566653022033 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class MainController < Ramaze::Controller map '/' define_method('file.ext'){ 'file.ext' } define_method('css__file.css'){ 'file.css' } define_method('path__to__js__file.js'){ 'file.js' } define_method('other__greet__other'){ @greet = 'hi' } end describe 'Controller resolving' do behaves_like :rack_test it 'should work with .' do get('/file.ext').body.should == 'file.ext' end it 'should work with /' do get('/css/file.css').body.should == 'file.css' get('/path/to/js/file.js').body.should == 'file.js' end it 'should find templates' do get('/other/greet/other').body.should == 'Other: hi' end end ramaze-2012.12.08/spec/ramaze/controller/provide_inheritance.rb0000644000004100000410000000210012140566653024361 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class SpecControllerInheritedMain < Ramaze::Controller Ramaze.node('/') def index @ngr = "Main is nagoro" "

#{@ngr}

" end end class SpecControllerInheritedOther < Ramaze::Controller Ramaze.node('/other').engine(:Haml) def index; "%p Other is haml"; end end class SpecControllerInheritedAnother < SpecControllerInheritedOther Ramaze.node('/another') def index; "%p Another is haml. Inherit from Other"; end end describe 'Ramaze::Controller#self.inherited' do behaves_like :rack_test should 'default renders nagoro' do get('/').body.should == "

Main is nagoro

" end should 'be able to render provided format' do get('/other').body.should == "

Other is haml

\n" end should "inherit provide from parent controller" do get('/another').body.should == "

Another is haml. Inherit from Other

\n" end end ramaze-2012.12.08/spec/ramaze/controller/subclass.rb0000644000004100000410000000214512140566653022170 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class BaseController < Ramaze::Controller alias_view :foo, :bar alias_view :one, :another, self def test() 'test' end end class MainController < BaseController end describe 'Controller' do behaves_like :rack_test it 'allows sub-classing MainController' do get('/test').body.should == 'test' end it 'respects view aliase from superclass, with no explicit controller' do # The template file it should use is view/bar.xhtml, as the template # mapping doesn't specify a controller, so it will be implicitly relative # to MainController. get('/foo').body.should == 'bar' end it 'respects view aliase from superclass, with an explicit controller' do # Note that the template file it should use is view/base/another.xhtml, # because BaseController explicitly specifies the template mapping in # relation to self. get('/one').body.should == 'another' end end ramaze-2012.12.08/spec/ramaze/controller/template_resolving.rb0000644000004100000410000000361012140566653024252 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class SpecViewAlias < Ramaze::Controller map '/' def greet(type, message = "Message") @greet = "#{type} : #{message}" end def list @obj = Ramaze::Current.action.method end alias_method :index, :list alias_view :index, :list alias_view :non_existant_method, :list end class SpecViewAlias2 < SpecViewAlias map '/other' def greet__mom(message = "Moms are cool!") greet('Mom', message) end alias_view :greet__mom, :greet, SpecViewAlias def greet__other @greet = "Other" end alias_view :greet__other, :blah def greet__another @greet = "Another" end alias_view :greet__another, :greet__other def greet__last @greet = 'Last' end alias_view :greet__last, 'greet__other' end describe "Template aliasing" do behaves_like :rack_test it 'serves normal template' do get('/greet/asdf').body.should == 'asdf : Message' end it 'references template from another controller' do get('/other/greet/mom').body.should == 'Mom : Moms are cool!' end it 'only uses aliased template if one can be found' do get('/other/greet/other').body.should == 'Other: Other' end it 'accepts aliases given as symbols' do get('/other/greet/another').body.should == 'Other: Another' end it 'accepts aliases given as strings' do get('/other/greet/last').body.should == 'Other: Last' end it 'aliases template for index action' do get('/list').body.should == 'list' get('/index').body.should == 'index' end it 'uses aliases even for non-existant actions' do get('/non_existant_method').body.should == '' end end ramaze-2012.12.08/spec/ramaze/controller/lonely_mapping.rb0000644000004100000410000000076212140566653023371 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class SpecHello < Ramaze::Controller def index 'automatically mapped' end end describe 'Lonely Controller automap' do behaves_like :rack_test it 'automatically creates an app and maps the controller into it' do get('/').body.should == 'automatically mapped' end end ramaze-2012.12.08/spec/ramaze/controller/actionless_templates.rb0000644000004100000410000000166312140566653024577 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) Ramaze::App.options.merge!(:layouts => 'view') class SpecActionlessTemplates < Ramaze::Controller map '/' trait :needs_method => true alias_view :non_existant_method, :list end class SpecActionlessTemplatesLayout < Ramaze::Controller map '/other' layout 'other_wrapper' map_layouts '/' trait :needs_method => true def index "Others Hello" end end describe "Testing Actionless Templates" do behaves_like :rack_test it "should not find template file for non existant method" do get('/list').status.should == 404 get('/non_existant_method').status.should == 404 end it "should render layout(without method) for normal action" do get('/other').body.should == '

Others Hello

' end end ramaze-2012.12.08/spec/ramaze/controller/view/0000755000004100000410000000000012140566653020774 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/controller/view/greet.xhtml0000644000004100000410000000002612140566653023156 0ustar www-datawww-data#{@greet}ramaze-2012.12.08/spec/ramaze/controller/view/other_wrapper.xhtml0000644000004100000410000000002112140566653024724 0ustar www-datawww-data

#@content

ramaze-2012.12.08/spec/ramaze/controller/view/other/0000755000004100000410000000000012140566653022115 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/controller/view/other/greet/0000755000004100000410000000000012140566653023223 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/controller/view/other/greet/other.xhtml0000644000004100000410000000003512140566653025420 0ustar www-datawww-dataOther: #{@greet}ramaze-2012.12.08/spec/ramaze/controller/view/bar.xhtml0000644000004100000410000000000312140566653022607 0ustar www-datawww-databarramaze-2012.12.08/spec/ramaze/controller/view/base/0000755000004100000410000000000012140566653021706 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/controller/view/base/another.xhtml0000644000004100000410000000000712140566653024421 0ustar www-datawww-dataanotherramaze-2012.12.08/spec/ramaze/controller/view/list.xhtml0000644000004100000410000000002412140566653023021 0ustar www-datawww-data#{@obj}ramaze-2012.12.08/spec/ramaze/request.rb0000644000004100000410000000456512140566653017666 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../spec/helper', __FILE__) describe 'Ramaze::Request' do def request(env = {}) Ramaze::Request.new(env) end @env = { "GATEWAY_INTERFACE" => "CGI/1.1", "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "HTTP_ACCEPT_CHARSET" => "UTF-8,*", "HTTP_ACCEPT_ENCODING" => "gzip,deflate", "HTTP_ACCEPT_LANGUAGE" => "en-us,en;q=0.8,de-at;q=0.5,de;q=0.3", "HTTP_CACHE_CONTROL" => "max-age=0", "HTTP_CONNECTION" => "keep-alive", "HTTP_HOST" => "localhost:7000", "HTTP_KEEP_ALIVE" => "300", "HTTP_USER_AGENT" => "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008123017 Firefox/3.0.4 Ubiquity/0.1.4", "HTTP_VERSION" => "HTTP/1.1", "PATH_INFO" => "/", "QUERY_STRING" => "a=b", "REMOTE_ADDR" => "127.0.0.1", "REMOTE_HOST" => "delta.local", "REQUEST_METHOD" => "GET", "REQUEST_PATH" => "/", "REQUEST_URI" => "http://localhost:7000/", "SCRIPT_NAME" => "", "SERVER_NAME" => "localhost", "SERVER_PORT" => "7000", "SERVER_PROTOCOL" => "HTTP/1.1", } should 'provide #accept_language' do request(@env).accept_language.should == %w[en-us en de-at de] end should 'provide #http_variables' do keys = %w[ HTTP_CACHE_CONTROL HTTP_HOST HTTP_KEEP_ALIVE HTTP_USER_AGENT HTTP_VERSION PATH_INFO QUERY_STRING REMOTE_ADDR REMOTE_HOST REQUEST_METHOD REQUEST_PATH REQUEST_URI ] vars = request(@env).http_variables vars.keys.sort.should == keys vars.values_at(*keys).should == @env.values_at(*keys) end should 'provide #accept_charset' do request(@env).accept_charset.should == 'UTF-8' end should 'properly parse requested locale' do header = { "HTTP_ACCEPT_LANGUAGE" => "sv-se,sv;q=0.8,en-us;q=0.5,en;q=0.3" } request(@env.merge(header)).accept_language_with_weight.should == [ ['sv-se', 1.0], ['sv', 0.8], ['en-us', 0.5], ['en', 0.3] ] header = { "HTTP_ACCEPT_LANGUAGE" => "nl-nl" } request(@env.merge(header)).accept_language_with_weight.should == [ ['nl-nl', 1.0] ] end end ramaze-2012.12.08/spec/ramaze/params.rb0000644000004100000410000000667612140566653017466 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../spec/helper', __FILE__) class TCParamsController < Ramaze::Controller map '/' def index "index" end def no_params "no params" end def single_param param "single param (#{param})" end def double_param param1, param2 "double param (#{param1}, #{param2})" end def all_params *params "all params (#{params.join(', ')})" end def at_least_one param, *params "at least one (#{param}, #{params.join(', ')})" end def one_default param = 'default' "one_default (#{param})" end def cat1__cat11 'cat1: cat11' end def cat1__cat11__cat111 'cat1: cat11: cat111' end end class TCParamsController2 < Ramaze::Controller map '/jo' def add(one, two = nil, three = nil) "#{one}:#{two}:#{three}" end def keys request.params.keys.inspect end end class TCParamsController3 < Ramaze::Controller map '/ma' def index(*args) request.params['foo'].to_s.dump end end describe "Simple Parameters" do behaves_like :rack_test def handle(*url) Ramaze::Mock.get(*url).body end it "Should respond to no parameters given" do handle('/no_params').should == "no params" end it "Should respond to only / with the index" do handle('/').should == "index" end it "call /bar though index doesn't take params" do handle('/bar').should == 'No action found at: "/bar"' end it "action that takes a single param" do handle('/single_param/foo').should == "single param (foo)" end it "action that takes two params" do handle('/double_param/foo/bar').should == "double param (foo, bar)" end it "action that takes two params but we give only one" do handle('/double_param/foo').should == 'No action found at: "/double_param/foo"' end it "action that takes all params" do handle('/all_params/foo/bar/foobar').should == "all params (foo, bar, foobar)" end it "action that takes all params but needs at least one" do handle('/at_least_one/foo/bar/foobar').should == "at least one (foo, bar, foobar)" end it "action that takes all params but needs at least one (not given here)" do lambda{ handle('/at_least_one') }.should.raise(ArgumentError) end it "one default" do handle('/one_default').should == "one_default (default)" end it "one default" do handle('/one_default/my_default').should == "one_default (my_default)" end it "double underscore lookup" do handle('/cat1/cat11').should == 'cat1: cat11' end it "double double underscore lookup" do handle('/cat1/cat11/cat111').should == 'cat1: cat11: cat111' end it "jo/add should raise with 0 parameters" do lambda{ handle('/jo/add') }. should.raise(ArgumentError) end it "add should raise with 4 parameters" do lambda{ handle('/jo/add/1/2/3/4') }. should.raise(ArgumentError) end it "add should not raise with 1-3 parameters" do handle('/jo/add/1').should == '1::' handle('/jo/add/1/2').should == '1:2:' handle('/jo/add/1/2/3').should == '1:2:3' end it 'params should have no content without params' do handle('/ma').should == '""' end it 'should have a parameter via QUERY_PARAMS' do handle('/ma?foo=bar').should == '"bar"' end it 'should handle valueless params' do handle('/jo/keys?foo').should == '["foo"]' end end ramaze-2012.12.08/spec/ramaze/cache/0000755000004100000410000000000012140566653016702 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/cache/memcache.rb0000644000004100000410000000346012140566653020774 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'dalli' Dalli.logger.level = Logger::ERROR spec_precondition 'memcached is running' do cache = Dalli::Client.new('localhost:11211') cache.set('active', true) end describe Ramaze::Cache::MemCache do Ramaze.options.cache.names = [:one, :two] Ramaze.options.cache.default = Ramaze::Cache::MemCache Ramaze.setup_dependencies cache = Ramaze::Cache.one hello = 'Hello, World!' should 'store without ttl' do cache.store(:hello, hello).should == hello end should 'fetch' do cache.fetch(:hello).should == hello end should 'delete' do cache.delete(:hello) cache.fetch(:hello).should == nil end should 'delete two key/value pairs at once' do cache.store(:hello, hello).should == hello cache.store(:ramaze, 'ramaze').should == 'ramaze' cache.delete(:hello, :ramaze) cache.fetch(:hello).should == nil cache.fetch(:innate).should == nil end should 'store with ttl' do cache.store(:hello, @hello, :ttl => 0.2) cache.fetch(:hello).should == @hello sleep 0.3 cache.fetch(:hello).should == nil end should 'amend the ttl if it is too high' do ttl = Ramaze::Cache::MemCache::MAX_TTL + 1 cache.store(:hello, @hello, :ttl => ttl) cache.fetch(:hello).should == @hello end should 'clear' do cache.store(:hello, @hello) cache.fetch(:hello).should == @hello cache.clear cache.fetch(:hello).should == nil end should 'use a custom set of options' do klass = Ramaze::Cache::MemCache.using(:answer => 42) klass.options[:answer].should == 42 klass.new.options[:answer].should == 42 end end ramaze-2012.12.08/spec/ramaze/cache/localmemcache.rb0000644000004100000410000000250512140566653022006 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'localmemcache' describe Ramaze::Cache::LocalMemCache do Ramaze.options.cache.names = [:one, :two] Ramaze.options.cache.default = Ramaze::Cache::LocalMemCache Ramaze.setup_dependencies cache = Ramaze::Cache.one hello = 'Hello, World!' should 'store without ttl' do cache.store(:hello, hello).should.equal hello end should 'fetch' do cache.fetch(:hello).should.equal hello end should 'delete' do cache.delete(:hello) cache.fetch(:hello).should.equal nil end should 'delete two key/value pairs at once' do cache.store(:hello, hello).should.equal hello cache.store(:ramaze, 'ramaze').should.equal 'ramaze' cache.delete(:hello, :ramaze) cache.fetch(:hello).should.equal nil cache.fetch(:innate).should.equal nil end should 'store with ttl' do cache.store(:hello, @hello, :ttl => 0.2) cache.fetch(:hello).should.equal @hello sleep 0.3 cache.fetch(:hello).should.equal nil end should 'clear' do cache.store(:hello, @hello) cache.fetch(:hello).should.equal @hello cache.clear cache.fetch(:hello).should.equal nil end end ramaze-2012.12.08/spec/ramaze/cache/redis.rb0000644000004100000410000000262212140566653020337 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) spec_require 'redis' spec_precondition 'redis is running' do cache = Redis.new cache['active'] = true end describe Ramaze::Cache::Redis do Ramaze.options.cache.names = [:one, :two] Ramaze.options.cache.default = Ramaze::Cache::Redis Ramaze.setup_dependencies cache = Ramaze::Cache.one hello = 'Hello, World!' should 'store without ttl' do cache.store(:hello, hello).should == hello end should 'fetch' do cache.fetch(:hello).should == hello end should 'delete' do cache.delete(:hello) cache.fetch(:hello).should == nil end should 'delete two key/value pairs at once' do cache.store(:hello, hello).should == hello cache.store(:ramaze, 'ramaze').should == 'ramaze' cache.delete(:hello, :ramaze) cache.fetch(:hello).should == nil cache.fetch(:innate).should == nil end should 'store with ttl' do cache.store(:hello, @hello, :ttl => 0.2) cache.fetch(:hello).should == @hello sleep 0.2 cache.fetch(:hello).should == nil end should 'clear' do cache.store(:hello, @hello) cache.fetch(:hello).should == @hello cache.clear cache.fetch(:hello).should == nil end should 'use a custom set of options' do klass = Ramaze::Cache::Redis.using(:answer => 42) klass.options[:answer].should == 42 klass.new.options[:answer].should == 42 end end ramaze-2012.12.08/spec/ramaze/cache/lru.rb0000644000004100000410000000236212140566653020034 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) describe Ramaze::Cache::LRU do Ramaze.options.cache.names = [:one, :two] Ramaze.options.cache.default = Ramaze::Cache::LRU Ramaze.setup_dependencies cache = Ramaze::Cache.one hello = 'Hello, World!' should 'store without ttl' do cache.store(:hello, hello).should == hello end should 'fetch' do cache.fetch(:hello).should == hello end should 'delete' do cache.delete(:hello) cache.fetch(:hello).should == nil end should 'delete two key/value pairs at once' do cache.store(:hello, hello).should == hello cache.store(:ramaze, 'ramaze').should == 'ramaze' cache.delete(:hello, :ramaze) cache.fetch(:hello).should == nil cache.fetch(:innate).should == nil end should 'store with ttl' do cache.store(:hello, @hello, :ttl => 0.2) cache.fetch(:hello).should == @hello sleep 0.3 cache.fetch(:hello).should == nil end should 'clear' do cache.store(:hello, @hello) cache.fetch(:hello).should == @hello cache.clear cache.fetch(:hello).should == nil end end ramaze-2012.12.08/spec/ramaze/cache/sequel.rb0000644000004100000410000000313712140566653020531 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'sqlite3' spec_require 'sequel' DB = Sequel.sqlite(':memory:') describe Ramaze::Cache::Sequel do Ramaze.options.cache.names = [:one, :two] Ramaze.options.cache.default = Ramaze::Cache::Sequel Ramaze.setup_dependencies cache = Ramaze::Cache.one hello = 'Hello, World!' should 'Store some data without a TTL' do cache.store(:hello, hello).should.equal hello end should 'Fetch a cache item' do cache.fetch(:hello).should.equal hello end should 'Delete a cache item' do cache.delete(:hello) cache.fetch(:hello).should == nil end should 'Delete two key/value pairs at once' do cache.store(:hello, hello).should.equal hello cache.store(:ramaze, 'ramaze').should.equal 'ramaze' cache.delete(:hello, :ramaze) cache.fetch(:hello).should.equal nil cache.fetch(:innate).should.equal nil end should 'Store some data with a TTL' do cache.store(:hello, @hello, :ttl => 1) cache.fetch(:hello).should.equal @hello sleep 2 cache.fetch(:hello).should.equal nil end should 'Clear the cache' do cache.store(:hello, @hello) cache.fetch(:hello).should.equal @hello cache.clear cache.fetch(:hello).should.equal nil end should 'use a custom set of options' do klass = Ramaze::Cache::Sequel.using(:answer => 42) klass.options[:answer].should === 42 klass.new.options[:answer].should === 42 end end ramaze-2012.12.08/spec/ramaze/helper/0000755000004100000410000000000012140566653017116 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/helper/request_accessor.rb0000644000004100000410000000106312140566653023015 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class SpecHelperRequestAccessor < Ramaze::Controller map '/' helper :request_accessor def index get? ? 'GET' : request_method end end describe 'Ramaze::Helper::RequestAccessor' do behaves_like :rack_test it 'gives direct access to methods in Request' do get('/').body.should == 'GET' put('/').body.should == 'PUT' end end ramaze-2012.12.08/spec/ramaze/helper/simple_captcha.rb0000644000004100000410000000207012140566653022416 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class SpecSimpleCaptcha < Ramaze::Controller helper :simple_captcha map '/' def ask_question question = simple_captcha end def answer_question(with) check_captcha(with) ? 'correct' : 'wrong' end end class SpecCustomCaptcha < SpecSimpleCaptcha map '/fish' trait :captcha => lambda{ ["the answer to everything", 42] } end describe Ramaze::Helper::SimpleCaptcha do behaves_like :rack_test should 'ask question' do get('/ask_question') question = last_response.body question.should =~ /^\d+ [+-] \d+$/ lh, m, rh = question.split answer = lh.to_i.send(m, rh.to_i) get("/answer_question/#{answer}").body.should == 'correct' end should 'ask custom question' do get('/fish/ask_question').body.should == 'the answer to everything' get('/fish/answer_question/42').body.should == 'correct' end end ramaze-2012.12.08/spec/ramaze/helper/uploads/0000755000004100000410000000000012140566653020565 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/helper/uploads/text_2.txt0000644000004100000410000000001512140566653022527 0ustar www-datawww-dataHello Ramaze ramaze-2012.12.08/spec/ramaze/helper/uploads/text_1.txt0000644000004100000410000000001412140566653022525 0ustar www-datawww-dataHello world ramaze-2012.12.08/spec/ramaze/helper/flash.rb0000644000004100000410000000170412140566653020542 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class SpecHelperFlash < Ramaze::Controller map '/' helper :flash trait :flashbox => "%key : %value" def box flashbox end def populate_one flash[:one] = 'for starters' end def populate_two flash[:one] = 'this one' flash[:two] = 'and this' end end describe Ramaze::Helper::Flash do behaves_like :rack_test it 'displays a flashbox with one item' do get('/populate_one') get('/box') last_response.status.should == 200 last_response.body.should == 'one : for starters' end it 'displays a flashbox with two items' do get('/populate_two') get('/box') last_response.status.should == 200 last_response.body.split("\n").sort.should == ['one : this one', 'two : and this'] end end ramaze-2012.12.08/spec/ramaze/helper/localize.rb0000644000004100000410000000325412140566653021251 0ustar www-datawww-data# * Encoding: UTF-8 # Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. $KCODE = 'u' if /regexp/.respond_to?(:kcode) require File.expand_path('../../../../spec/helper', __FILE__) spec_requires 'locale/tag', 'locale' class SpecHelperLocalize < Ramaze::Controller map '/' helper :localize def index locale.language end def translate(string) l(string) end private def localize_dictionary DICTIONARY end end DICTIONARY = Ramaze::Helper::Localize::Dictionary.new DICTIONARY.load(:en, :hash => {'one' => 'one', 'two' => 'two'}) DICTIONARY.load(:de, :hash => {'one' => 'eins', 'two' => 'zwei'}) DICTIONARY.load(:ja, :hash => {'one' => '一', 'three' => '三'}) describe Ramaze::Helper::Localize do behaves_like :rack_test should 'default to a language' do get('/').body.should == 'en' end should 'override language by ?lang' do get('/?lang=de').body.should == 'de' end should 'override language by cookie' do set_cookie('lang=ja') get('/').body.should == 'ja' clear_cookies end should 'not fail if language is invalid' do get('/?lang=foobar').body.should == 'foobar' end should 'use dictionary to translate' do get('/translate/one').body.should == 'one' get('/translate/one?lang=en').body.should == 'one' get('/translate/one?lang=ja').body.should == '一' get('/translate/one?lang=de').body.should == 'eins' end it "falls back to default language if string wasn't found in dictionary" do get('/translate/two?lang=ja').body.should == 'two' get('/translate/three?lang=ja').body.should == '三' end end ramaze-2012.12.08/spec/ramaze/helper/upload.rb0000644000004100000410000000747012140566653020737 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) require 'fileutils' require 'tempfile' class SpecUploadHelper < Ramaze::Controller map '/' helper :upload handle_uploads_for :auto_upload handle_uploads_for [:auto_upload_pattern, /file_2/] def empty if get_uploaded_files.empty? return 'empty' else return 'not empty' end end def upload get_uploaded_files.each_pair do |k, v| v.save(File.join('/tmp/ramaze_uploads', v.filename)) return 'not uploaded' unless v.saved? end return 'uploaded' end # If all goes well this should behave exactly the same as upload() with the # difference that the uploads are processed in handle_uploads_for() and then # just returned. def auto_upload return upload end def auto_upload_pattern return upload end end describe('Ramaze::Helper::Upload') do behaves_like :rack_test before { Dir.mkdir('/tmp/ramaze_uploads') } after { FileUtils.rm_rf('/tmp/ramaze_uploads') } it('No files should be uploaded') do get('/empty').body.strip.should === 'empty' end it('Upload a text file') do file = Rack::Test::UploadedFile.new( __DIR__('uploads/text_1.txt'), 'text/plain' ) body = post('/upload', :file_1 => file).body.strip body.should === 'uploaded' File.exist?('/tmp/ramaze_uploads/text_1.txt').should === true File.read('/tmp/ramaze_uploads/text_1.txt').strip.should === 'Hello world' end it('Upload multiple files') do file_1 = Rack::Test::UploadedFile.new( __DIR__('uploads/text_1.txt'), 'text/plain' ) file_2 = Rack::Test::UploadedFile.new( __DIR__('uploads/text_2.txt'), 'text/plain' ) body = post('/upload', :file_1 => file_1, :file_2 => file_2).body.strip body.should === 'uploaded' File.exist?('/tmp/ramaze_uploads/text_1.txt').should === true File.read('/tmp/ramaze_uploads/text_1.txt').strip.should === 'Hello world' File.exist?('/tmp/ramaze_uploads/text_2.txt').should === true File.read('/tmp/ramaze_uploads/text_2.txt').strip.should === 'Hello Ramaze' end it('Automatically handle uploads') do file_1 = Rack::Test::UploadedFile.new( __DIR__('uploads/text_1.txt'), 'text/plain' ) body = post('/auto_upload', :file_1 => file_1).body.strip body.should === 'uploaded' File.exist?('/tmp/ramaze_uploads/text_1.txt').should === true File.read('/tmp/ramaze_uploads/text_1.txt').strip.should === 'Hello world' end it('Automatically handle uploads using a pattern') do file_1 = Rack::Test::UploadedFile.new( __DIR__('uploads/text_1.txt'), 'text/plain' ) file_2 = Rack::Test::UploadedFile.new( __DIR__('uploads/text_2.txt'), 'text/plain' ) body = post( '/auto_upload_pattern', :file_1 => file_1, :file_2 => file_2 ).body.strip body.should === 'uploaded' File.exist?('/tmp/ramaze_uploads/text_1.txt').should === true File.exist?('/tmp/ramaze_uploads/text_2.txt').should === false File.read('/tmp/ramaze_uploads/text_1.txt').strip.should === 'Hello world' end end describe('Ramaze::Helper::Upload::UploadedFile') do before { Dir.mkdir('/tmp/ramaze_uploads') } after { FileUtils.rm_rf('/tmp/ramaze_uploads') } it('Create a new file') do path = __DIR__('uploads/text_1.txt') file = Ramaze::Helper::Upload::UploadedFile.new( path, 'text/plain', Tempfile.new('text_1.txt'), Ramaze::Helper::Upload::ClassMethods.trait[:default_upload_options] ) file.filename.should === 'text_1.txt' file.type.should === 'text/plain' file.path.nil?.should === true file.save('/tmp/ramaze_uploads/text_1.txt') file.path.nil?.should === false file.instance_variable_get("@realfile").closed?.should === true end end ramaze-2012.12.08/spec/ramaze/helper/gestalt.rb0000644000004100000410000000107512140566653021111 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/helper/gestalt' describe Ramaze::Helper::Gestalt do extend Ramaze::Helper::Gestalt it 'has a shortcut for Ramaze::Gestalt::new' do gestalt{ h1('title') }.to_s.should == Ramaze::Gestalt.new{ h1('title') }.to_s end it 'has a shortcut for Ramaze::Gestalt::build' do build{ h1('title') }.should == '

title

' end end ramaze-2012.12.08/spec/ramaze/helper/csrf.rb0000644000004100000410000000247612140566653020411 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/helper/csrf' class SpecHelperCSRF < Ramaze::Controller engine :none helper :csrf before_all do csrf_protection :check_post, :protect_me do respond("The specified CSRF token is incorrect.", 401) end end def index generate_csrf_token end def get return get_csrf_token end def check_post "POST allowed." end def get_token get_csrf_token end end describe Ramaze::Helper::CSRF do behaves_like :rack_test it 'generate a new csrf token' do got = get '/' got.status.should.equal 200 got.body.should.equal '' end it 'retrieve the current CSRF token' do got = get '/get' got.status.should.equal 200 got.body.length.should.equal 128 end it 'validate all HTTP requests' do methods = [:get, :post, :put, :delete] methods.each do |method| token = get('/get_token').body got_invalid = self.send(method, '/check_post', :name => "Yorick Peterse") got_valid = self.send(method, '/check_post', :csrf_token => token) got_invalid.status.should.equal 401 got_invalid.body.should.equal "The specified CSRF token is incorrect." got_valid.status.should.equal 200 got_valid.body.should.equal "POST allowed." end end end ramaze-2012.12.08/spec/ramaze/helper/email.rb0000644000004100000410000000412012140566653020527 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/helper/email' include Ramaze::Helper::Email # Modify Net::SMTP so it doesn't actually send the Emails class Net::SMTP MockData = { :email => nil, :sender => nil, :receivers => [], :helo => nil, :user => nil, :secret => nil, :auth_type => nil } def start(helo = 'localhost', user = nil, secret = nil, auth_type = nil) MockData[:helo], MockData[:user], MockData[:secret], MockData[:auth_type] = helo, \ user, secret, auth_type if block_given? return yield(self) else return self end end # Rather than sending the Email we'll store them in a variable def send_message(email, sender, *to_addrs) MockData[:email], MockData[:sender], MockData[:receivers] = email, sender, to_addrs end end # Net::SMTP describe Ramaze::Helper::Email do it('The options should be available') do Ramaze::Helper::Email.options.host.should.equal '' Ramaze::Helper::Email.options.auth_type.should.equal :login end it('The options should be editable') do Ramaze::Helper::Email.options.host = 'smtp.awesome.tld' Ramaze::Helper::Email.options.host.should.equal 'smtp.awesome.tld' end it('Send an Email') do Ramaze::Helper::Email.options.host = 'smtp_host' Ramaze::Helper::Email.options.username = 'smtp_user' Ramaze::Helper::Email.options.password = 'smtp_pass' Ramaze::Helper::Email.options.sender = 'email@domain.tld' send_email('email@domain.tld', 'simple', 'This is a simple email') Net::SMTP::MockData[:helo].should.empty Net::SMTP::MockData[:sender].should.equal 'email@domain.tld' Net::SMTP::MockData[:user].should.equal 'smtp_user' Net::SMTP::MockData[:secret].should.equal 'smtp_pass' Net::SMTP::MockData[:auth_type].should.equal :login # Right, time to validate the actual Email itself [ /From: email@domain\.tld/, /To: /, /Subject: simple/, /\r\n/ ].each do |regex| Net::SMTP::MockData[:email].should.match regex end end end ramaze-2012.12.08/spec/ramaze/helper/maruku.rb0000644000004100000410000000102312140566653020743 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'maruku' class SpecHelperMaruku < Ramaze::Controller map '/' helper :maruku def index maruku('# Hello') end end describe Ramaze::Helper::Maruku do behaves_like :rack_test it 'converts a markdown string to html' do get('/').body.should =~ /

Hello<\/h1>/ end end ramaze-2012.12.08/spec/ramaze/helper/formatting.rb0000644000004100000410000001126612140566653021623 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/helper/formatting' describe 'Helper::Formatting' do extend Ramaze::Helper::Formatting describe '#number_counter' do extend Ramaze::Helper::Formatting it 'gives a correct plural counter' do number_counter(0, 'comment').should == 'no comments' number_counter(1, 'comment').should == 'one comment' number_counter(2, 'comment').should == 'two comments' number_counter(3, 'comment').should == 'three comments' number_counter(4, 'comment').should == 'four comments' number_counter(5, 'comment').should == 'five comments' number_counter(6, 'comment').should == 'six comments' number_counter(7, 'comment').should == 'seven comments' number_counter(8, 'comment').should == 'eight comments' number_counter(9, 'comment').should == 'nine comments' number_counter(10, 'comment').should == 'ten comments' number_counter(11, 'comment').should == '11 comments' number_counter(12, 'comment').should == '12 comments' end it 'uses +items+ as plural version' do number_counter(0, 'pants', 'pants').should == 'no pants' end it 'tries using the pluralize method on +item+ if no +items+ given' do item = 'person' def item.pluralize; 'people'; end number_counter(0, item).should == 'no people' end end it 'formats numbers' do number_format(2_123_456).should == '2,123,456' number_format(1234.567).should == '1,234.567' number_format(123456.789, '.').should == '123.456,789' number_format(123456.789123, '.').should == '123.456,789123' number_format(132123456.789123, '.').should == '132.123.456,789123' end it 'returns difference in time as a string' do check = lambda{|diff, string| time_diff(Time.now - diff).should == string } check[1, 'less than a minute'] check[60, '1 minute'] check[60 * 50, 'about 1 hour'] check[60 * 120, 'about 2 hours'] check[60 * 60 * 24, '1 day'] check[60 * 60 * 48, '2 days'] check[60 * 60 * 24 * 30, 'about 1 month'] check[60 * 60 * 24 * 60, '2 months'] check[60 * 60 * 24 * 30 * 20, 'about 1 year'] check[60 * 60 * 24 * 30 * 42, 'over 3 years'] time_diff(Time.now, Time.now + 4, true).should == 'less than 5 seconds' time_diff(Time.now, Time.now + 6, true).should == 'less than 10 seconds' time_diff(Time.now, Time.now + 29, true).should == 'half a minute' time_diff(Time.now, Time.now + 50, true).should == 'less than a minute' time_diff(Time.now, Time.now + 66, true).should == '1 minute' end it 'linkifies urls' do auto_link("http://ramaze.net is the coolest framework, but merb is good too").should == "http://ramaze.net is the coolest framework, but merb is good too" auto_link("http://ramaze.net", :target => '_blank').should == "http://ramaze.net" end it 'auto_links urls, setting the result of the given block as the link text' do auto_link('http://ramaze.net rocks, so does http://rubyonrails.org.') { |url| url.sub!(%r{http://}, '') }.should == 'ramaze.net rocks, so does rubyonrails.org.' end it 'ordinalizes numbers' do ordinal(1).should == '1st' ordinal(2).should == '2nd' ordinal(3).should == '3rd' ordinal(4).should == '4th' ordinal(10).should == '10th' ordinal(12).should == '12th' ordinal(21).should == '21st' ordinal(23).should == '23rd' ordinal(100).should == '100th' ordinal(133).should == '133rd' end it 'generates tagclouds' do tags = %w[ruby ruby code ramaze] tagcloud(tags).should == {"code"=>0.75, "ramaze"=>0.75, "ruby"=>1.0} tagcloud(tags, 0.5, 2.0).should == {"code"=>0.875, "ramaze"=>0.875, "ruby"=>1.25} end it 'converts newlines to br tags' do nl2br("foo\nbar\nfoobar").should == 'foo
bar
foobar' nl2br("foo\nbar\nfoobar", false).should == 'foo
bar
foobar' end it 'obfuscates email addresses' do obfuscate_email('foo@example.com'). should == "foo@example.com" obfuscate_email('foo@example.com', 'mail foo'). should == "mail foo" end end ramaze-2012.12.08/spec/ramaze/helper/paginate.rb0000644000004100000410000001770212140566653021242 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'nokogiri' class SpecHelperPaginateArray < Ramaze::Controller map '/array' helper :paginate ALPHA = %w[ alpha beta gamma delta epsilon zeta eta theta iota kappa lambda mu nu xi omicron pi rho sigma tau ypsilon phi chi psi omega ] def navigation pager = paginate(ALPHA) pager.navigation end def custom_navigation css = {:first => "TheFirst", :prev => "ThePrevious", :next => "TheNext", :last => "TheLast", :number => "TheNumber", :disabled =>"Severely Disabled", :current => "TheCurrent" } pager = paginate(ALPHA, :css => css) pager.navigation end def iteration pager = paginate(ALPHA) out = [] pager.each{|item| out << item } out.inspect end end describe Ramaze::Helper::Paginate do describe 'Array' do behaves_like :rack_test it 'shows navigation for page 1' do doc = Nokogiri::HTML(get("/array/navigation").body) doc.css('a').map{|a| [a.inner_text, a[:href]] }. should == [ ['1', '/array/navigation?pager=1'], ['2', '/array/navigation?pager=2'], ['3', '/array/navigation?pager=3'], ['>', '/array/navigation?pager=2'], ['>>', '/array/navigation?pager=3']] end it 'shows navigation for page 2' do doc = Nokogiri::HTML(get("/array/navigation?pager=2").body) doc.css('a').map{|a| [a.inner_text, a[:href]] }. should == [ ['<<', '/array/navigation?pager=1'], ['<', '/array/navigation?pager=1'], ['1', '/array/navigation?pager=1'], ['2', '/array/navigation?pager=2'], ['3', '/array/navigation?pager=3'], ['>', '/array/navigation?pager=3'], ['>>', '/array/navigation?pager=3']] end it 'shows navigation for page 3' do doc = Nokogiri::HTML(get("/array/navigation?pager=3").body) doc.css('a').map{|a| [a.inner_text, a[:href]] }. should == [ ['<<', '/array/navigation?pager=1'], ['<', '/array/navigation?pager=2'], ['1', '/array/navigation?pager=1'], ['2', '/array/navigation?pager=2'], ['3', '/array/navigation?pager=3']] end it 'iterates over the items in the pager' do got = get('/array/iteration') got.body.scan(/\w+/).should == SpecHelperPaginateArray::ALPHA.first(10) end it 'sets default css elements on page 1' do doc = Nokogiri::HTML(get('/array/navigation').body) # Paginator outputs spans for disabled elements # Since we're on the first page, the first two # elements are spans, then a's # Note that this is only valid for the first page since # it doens't need lonks to first and prev # # Looking for spans first spans = doc.search("//span") first = spans.first[:class] first.should == "first grey" prev = spans[1][:class] prev.should == "prev grey" # Looking for a elements as = doc.search("//a") current = as.first[:class] current.should == "current " randomnumber = as[1][:class] randomnumber.should == "" nxt = as[3][:class] nxt.should == "next" last = as[4][:class] last.should == "last" end it 'sets default css elements on page 2' do doc = Nokogiri::HTML(get('/array/navigation?pager=2').body) # Paginator outputs spans for disabled elements # Since we're on the second page, none are disabled # Note that this is only valid for the second page since # it will have all the links, while 1 and 3 have some disabled # # Looking for a elements as = doc.search("//a") first = as.first[:class] first.should == "first" prev = as[1][:class] prev.should == "prev" pg1 = as[2][:class] pg1.should == "" current = as[3][:class] current.should == "current " pg3 = as[4][:class] pg3.should == "" nxt = as[5][:class] nxt.should == "next" last = as[6][:class] last.should == "last" end it 'sets default css elements on page 3' do doc = Nokogiri::HTML(get('/array/navigation?pager=3').body) # Paginator outputs spans for disabled elements # Since we're on the last page, last and next will be disabled # Note that this is only valid for the third page # # Looking for a elements as = doc.search("//a") first = as.first[:class] first.should == "first" prev = as[1][:class] prev.should == "prev" pg1 = as[2][:class] pg1.should == "" pg2 = as[3][:class] pg2.should == "" current = as[4][:class] current.should == "current " # Looking for span elements spans = doc.search("//span") first = spans.first[:class] first.should == "next grey" last = spans[1][:class] last.should == "last grey" end it 'sets our custom css elements for page 1' do doc = Nokogiri::HTML(get('/array/custom_navigation').body) # Paginator outputs spans for disabled elements # Since we're on the first page, the first two # elements are spans, then a's # Note that this is only valid for the first page since # it doens't need lonks to first and prev # # Looking for spans first spans = doc.search("//span") first = spans.first[:class] first.should.include? "TheFirst" first.should.include? "Disabled" first.should.include? "Severely" prev = spans[1][:class] prev.should.include? "Severely" prev.should.include? "Disabled" prev.should.include? "ThePrevious" # Looking for a elements as = doc.search("//a") current = as.first[:class] current.should.include? "TheCurrent" current.should.include? "TheNumber" randomnumber = as[1][:class] randomnumber.should.include? "TheNumber" nxt = as[3][:class] nxt.should.include? "TheNext" last = as[4][:class] last.should.include? "TheLast" end it 'sets our custom css elements on page 2' do doc = Nokogiri::HTML(get('/array/custom_navigation?pager=2').body) # Paginator outputs spans for disabled elements # Since we're on the second page, none are disabled # Note that this is only valid for the second page since # it will have all the links, while 1 and 3 have some disabled # # Looking for a elements as = doc.search("//a") first = as.first[:class] first.should == "TheFirst" prev = as[1][:class] prev.should == "ThePrevious" pg1 = as[2][:class] pg1.should == "TheNumber" current = as[3][:class] current.should == "TheCurrent TheNumber" pg3 = as[4][:class] pg3.should == "TheNumber" nxt = as[5][:class] nxt.should == "TheNext" last = as[6][:class] last.should == "TheLast" end it 'sets our custom css elements on page 3' do doc = Nokogiri::HTML(get('/array/custom_navigation?pager=3').body) # Paginator outputs spans for disabled elements # Since we're on the last page, last and next will be disabled # Note that this is only valid for the third page # # Looking for a elements as = doc.search("//a") first = as.first[:class] first.should == "TheFirst" prev = as[1][:class] prev.should == "ThePrevious" pg1 = as[2][:class] pg1.should == "TheNumber" pg2 = as[3][:class] pg2.should == "TheNumber" current = as[4][:class] current.should == "TheCurrent TheNumber" # Looking for span elements spans = doc.search("//span") first = spans.first[:class] first.should == "TheNext Severely Disabled" last = spans[1][:class] last.should == "TheLast Severely Disabled" end end end ramaze-2012.12.08/spec/ramaze/helper/bench.rb0000644000004100000410000000120312140566653020516 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/helper/bench' describe Ramaze::Helper::Bench do extend Ramaze::Helper::Bench log = [] def log.info(arg); push(arg); end Ramaze::Log.loggers = [log] it 'logs running time' do result = bench{ sleep 0.1; 'result' } result.should == 'result' log.size.should == 1 # output between ruby 1.8 and 1.9 differs... log.pop.should =~ %r!^Bench #{__FILE__}:#{__LINE__ - 4}:.* \d\.\d+$! end end ramaze-2012.12.08/spec/ramaze/helper/layout.rb0000644000004100000410000000526212140566653020765 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class LayoutHelperOne < Ramaze::Controller map '/one' set_layout 'default' def laid_out1; end def laid_out2; end def laid_out3; end end class LayoutHelperTwo < Ramaze::Controller map '/two' layout 'default' set_layout 'alternative' => [:laid_out2, :laid_out3] def laid_out1; end def laid_out2; end def laid_out3; end end class LayoutHelperThree < Ramaze::Controller map '/three' set_layout 'default' => [:laid_out1], 'alternative' => [:laid_out2] set_layout 'default' => [:laid_out3] def laid_out1; end def laid_out2; end def laid_out3; end end class LayoutHelperFour < Ramaze::Controller map '/four' layout { |path| 'default' } set_layout 'alternative' => [:laid_out2] set_layout 'alternative' => [:laid_out3] def laid_out1; end def laid_out2; end def laid_out3; end end describe Ramaze::Helper::Layout do behaves_like :rack_test it 'lays out all actions' do get '/one/laid_out1' last_response.status.should == 200 last_response.body.should.match /laid out/ get '/one/laid_out2' last_response.status.should == 200 last_response.body.should.match /laid out/ get '/one/laid_out3' last_response.status.should == 200 last_response.body.should.match /laid out/ end it 'lays out only a whitelist of actions with layout() as a fallback' do get '/two/laid_out1' last_response.status.should == 200 last_response.body.should.match /laid out/ get '/two/laid_out2' last_response.status.should == 200 last_response.body.should.match /alternative/ get '/two/laid_out3' last_response.status.should == 200 last_response.body.should.match /alternative/ end it 'Define a set of method specific layouts' do get '/three/laid_out1' last_response.status.should === 200 last_response.body.should.match /laid out/ get '/three/laid_out2' last_response.status.should === 200 last_response.body.should.match /alternative/ get '/three/laid_out3' last_response.status.should === 200 last_response.body.should.match /laid out/ end it 'lays out a whitelist with layout() as a fallback using a block' do get '/four/laid_out1' last_response.status.should == 200 last_response.body.should.match /laid out/ get '/four/laid_out2' last_response.status.should == 200 last_response.body.should.match /alternative/ get '/four/laid_out3' last_response.status.should == 200 last_response.body.should.match /alternative/ end end ramaze-2012.12.08/spec/ramaze/helper/cache.rb0000644000004100000410000000545012140566653020512 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class SpecHelperCache < Ramaze::Controller map '/' helper :cache cache_action(:method => :cached_action) cache_action(:method => :with_params) cache_action(:method => :with_type) def cached_value cache_value[:time] ||= random end def cached_action random.to_s end def with_params(foo, bar) "foo: #{foo}, bar: #{bar}, random: #{random}" end def with_type response['Content-Type'] = 'text/plain' random.to_s end private def random [Time.now.usec, rand].inspect end end class SpecHelperCacheTTL < Ramaze::Controller map '/ttl' helper :cache cache_action(:method => :index, :ttl => 1) def index rand.to_s end end class SpecHelperCacheKey < Ramaze::Controller map '/key' helper :cache cache_action(:method => :index){ request[:name] } def index "hi #{request['name']} #{rand}" end end describe Ramaze::Helper::Cache do behaves_like :rack_test it 'caches actions' do got = get('/cached_action') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.should.not.be.empty cached_body = got.body got = get('/cached_action') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.should == cached_body end it 'caches values' do got = get('/cached_value') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.should.not.be.empty cached_body = got.body got = get('/cached_value') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.should == cached_body end it 'caches actions with params' do 2.times do lambda{ get('/with_params/foo/bar').body }.should.not.change{ get('/with_params/foo/bar').body } end get('/with_params/foo/bar').body.should.not == get('/with_params/baz/quux').body end it 'preserves the Content-Type' do 2.times do lambda{ get('/with_type').body }.should.not.change{ get('/with_type').body } end get('/with_type')['Content-Type'].should == 'text/plain' end it 'caches actions with ttl' do 2.times do lambda{ get('/ttl').body }.should.not.change{ get('/ttl').body } end lambda{ sleep 1.5; get('/ttl').body }.should.change{ get('/ttl').body } end it 'caches actions with block keys' do 2.times do lambda{ get('/key?name=foo').body }.should.not.change{ get('/key?name=foo').body } end get('/key?name=foo').body.should.not == get('/key?name=bar').body end it 'caches actions on a per-controller basis' do get('/ttl').body.should.not == get('/key').body end end ramaze-2012.12.08/spec/ramaze/helper/auth.rb0000644000004100000410000000355712140566653020416 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) $password = Digest::SHA1.hexdigest('pass') class SpecHelperAuth < Ramaze::Controller map '/' helper :auth def index self.class.name end def session_inspect session.inspect end def secured "Secret content" end before(:secured) { login_required } end class SpecHelperAuthHash < SpecHelperAuth map '/hash' trait :auth_table => { 'manveru' => $password } end class SpecHelperAuthMethod < SpecHelperAuth map '/method' trait :auth_table => :auth_table private def auth_table { 'manveru' => $password } end end class SpecHelperAuthLambda < SpecHelperAuth map '/lambda' trait :auth_table => lambda { { 'manveru' => $password } } end describe Ramaze::Helper::Auth do %w[ hash lambda method ].each do |prefix| describe "login" do behaves_like :rack_test it "uses a #{prefix}" do get "/#{prefix}/secured" follow_redirect! last_response.status.should == 200 last_response.body.should =~ (/
'manveru', 'password' => 'pass') follow_redirect! last_response.status.should == 200 last_response.body.should == 'Secret content' get "/#{prefix}/secured" last_response.status.should == 200 last_response.body.should == 'Secret content' get "/#{prefix}/logout" follow_redirect! last_response.status.should == 200 last_response.body.should == 'SpecHelperAuth' get "/#{prefix}/secured" follow_redirect! last_response.status.should == 200 last_response.body.should =~ (/file', 'dir', 'listing', 'is', 'cool' ].join('/') end it 'lays out breadcrumbs with href prefix' do SpecHelperLink.breadcrumbs('/file/dir/listing/is/cool', '/', '/', '/prefix/path'). should == [ 'file', 'dir', 'listing', 'is', 'cool' ].join('/') end it "builds routes and links to other applications" do SpecHelperApp.r(:foo).to_s.should == '/other/foo' SpecHelperApp.a(:foo, :bar).should == 'foo' SpecHelperAppTwo.r(:foo).to_s.should == '/other/two/foo' SpecHelperAppTwo.a(:foo, :bar).should == 'foo' end it "builds routes when Ramaze.options.prefix is present" do Ramaze.options.prefix = '/prfx' SpecHelperLink.r(:foo).to_s.should == '/prfx/foo' SpecHelperLinkTwo.r(:foo).to_s.should == '/prfx/two/foo' SpecHelperApp.r(:foo).to_s.should == '/prfx/other/foo' SpecHelperAppTwo.r(:foo).to_s.should == '/prfx/other/two/foo' end it "builds links when Ramaze.options.prefix is present" do Ramaze.options.prefix = '/prfx' SpecHelperLink.a(:foo, :bar).should == 'foo' SpecHelperLinkTwo.a(:foo, :bar).should == 'foo' SpecHelperApp.a(:foo, :bar).should == 'foo' SpecHelperAppTwo.a(:foo, :bar).should == 'foo' end end ramaze-2012.12.08/spec/ramaze/helper/xhtml.rb0000644000004100000410000000470612140566653020606 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/helper/xhtml' describe Ramaze::Helper::XHTML do extend Ramaze::Helper::XHTML should 'answer with on #css' do css(:foo). should == '' css(:foo, 'mobile'). should == '' css(:foo, 'screen', :only => :ie). should == '' css('http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js', 'screen'). should == '' end should 'answer with on #css with optional prefix' do css(:foo, 'screen', :prefix => 'bar'). should == '' end should 'answer with on #css with options hash as second argument' do css(:foo, :prefix => 'bar/baz'). should == '' end should 'answer with ' js('http://example.com/foo.js'). should == '' end should 'answer with ' js(:foo, :prefix => 'javascripts/deeply/nested'). should == '' end should 'answer with multiple on #css_for' do css_for(:foo, :bar). should == "\n" end should 'ansewr with multiple \n" end end ramaze-2012.12.08/spec/ramaze/helper/gravatar.rb0000644000004100000410000000303212140566653021250 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/helper/gravatar' describe Ramaze::Helper::Gravatar do extend Ramaze::Helper::Gravatar @email = 'ramaze-spec-gravatar@manveru.oib.com' @digest = Digest::MD5.hexdigest(@email) def uri(*tail) URI("http://www.gravatar.com/avatar/#{@digest}#{tail.join}") end it 'takes an email and turns it into a hashed part of the uri' do gravatar(@email).should == uri end it 'takes :size option' do gravatar(@email, :size => 100).should == uri('?size=100') end it 'takes :rating option' do gravatar(@email, :rating => 'g').should == uri('?rating=g') gravatar(@email, :rating => 'pg').should == uri('?rating=pg') gravatar(@email, :rating => 'r').should == uri('?rating=r') gravatar(@email, :rating => 'x').should == uri('?rating=x') end it 'takes :default option' do gravatar(@email, :default => :identicon).should == uri('?default=identicon') gravatar(@email, :default => :monsterid).should == uri('?default=monsterid') gravatar(@email, :default => :wavatar).should == uri('?default=wavatar') gravatar(@email, :default => 'http://example.com/me.jpg').should == uri('?default=http%3A%2F%2Fexample.com%2Fme.jpg') end it 'takes :force option' do gravatar(@email, :force => true).should == uri('?force=1') gravatar(@email, :force => false).should == uri('') end end ramaze-2012.12.08/spec/ramaze/helper/blue_form.rb0000644000004100000410000005575612140566653021437 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/helper/blue_form' describe BF = Ramaze::Helper::BlueForm do extend BF # Generate some dummy data @data = Class.new do attr_reader :username attr_reader :password attr_reader :assigned attr_reader :assigned_hash attr_reader :message attr_reader :servers_hash attr_reader :servers_array attr_accessor :errors def initialize @username = 'mrfoo' @password = 'super-secret-password' @assigned = ['bacon', 'steak'] @assigned_hash= {'Bacon' => 'bacon', 'Steak' => 'steak'} @message = 'Hello, textarea!' @servers_hash = { :webrick => 'WEBrick', :mongrel => 'Mongrel', :thin => 'Thin', } @servers_array = ['WEBrick', 'Mongrel', 'Thin'] end end.new # very strange comparision, sort all characters and compare, so we don't have # order issues. def assert(expected, output) left = expected.to_s.gsub(/\s+/, ' ').gsub(/>\s+<').strip right = output.to_s.gsub(/\s+/, ' ').gsub(/>\s+<').strip left.scan(/./).sort.should == right.scan(/./).sort end # ------------------------------------------------ # Basic forms it 'Make a basic form' do out = form_for(@data, :method => :post) assert(<<-FORM, out)
FORM end it 'Make a form with the method and action attributes specified' do out = form_for(@data, :method => :post, :action => '/') assert(<<-FORM, out)
FORM end it 'Make a form with a method, action and a name attribute' do out = form_for(@data, :method => :post, :action => '/', :name => :spec) assert(<<-FORM, out)
FORM end it 'Make a form with a class and an ID' do out = form_for(@data, :class => :foo, :id => :bar) assert(<<-FORM, out)
FORM end it 'Make a form with a fieldset and a legend' do out = form_for(@data, :method => :get) do |f| f.fieldset do f.legend('The Form') end end assert(<<-FORM, out)
The Form
FORM end # ------------------------------------------------ # Text fields it 'Make a form with input_text(label, value)' do out = form_for(@data, :method => :get) do |f| f.input_text 'Username', :username end assert(<<-FORM, out)

FORM end it 'Make a form with input_text(username, label, value)' do out = form_for(@data, :method => :get) do |f| f.input_text 'Username', :username, :value => 'mrboo' end assert(<<-FORM, out)

FORM end it 'Make a form with input_text(label, name, size, id)' do out = form_for(@data, :method => :get) do |f| f.input_text 'Username', :username, :size => 10, :id => 'my_id' end assert(<<-FORM, out)

FORM end # ------------------------------------------------ # Password fields it 'Make a form with input_password(label, name)' do out = form_for(nil , :method => :get) do |f| f.input_password 'Password', :password end assert(<<-FORM, out)

FORM end it 'Make a form with input_password(label, name, value, class)' do out = form_for(@data, :method => :get) do |f| f.input_password 'Password', :password, :value => 'super-secret-password', :class => 'password_class' end assert(<<-FORM, out)

FORM end # ------------------------------------------------ # Submit buttons it 'Make a form with input_submit()' do out = form_for(@data, :method => :get) do |f| f.input_submit end assert(<<-FORM, out)

FORM end it 'Make a form with input_submit(value)' do out = form_for(@data, :method => :get) do |f| f.input_submit 'Send' end assert(<<-FORM, out)

FORM end # ------------------------------------------------ # Checkboxes it 'Make a form with input_checkbox(label, name)' do out = form_for(@data, :method => :get) do |f| f.input_checkbox 'Assigned', :assigned end assert(<<-FORM, out)

bacon steak

FORM end it 'Make a form with input_checkbox(label, name, checked)' do out = form_for(@data, :method => :get) do |f| f.input_checkbox 'Assigned', :assigned, 'bacon' end assert(<<-FORM, out)

bacon steak

FORM end it 'Make a form with input_checkbox(label, name, checked, values, default)' do out = form_for(@data, :method => :get) do |f| f.input_checkbox 'Assigned', :assigned, 'boo', :values => ['boo'] end assert(<<-FORM, out)

boo

FORM end it 'Make a form with input_checkbox and check multiple values using an array' do out = form_for(@data, :method => :get) do |f| f.input_checkbox 'Assigned', :assigned, ['boo'], :values => ['boo', 'foo'] end assert(<<-FORM, out)

boo foo

FORM end it 'Make a form with input_checkbox and check multiple values using a hash' do out = form_for(@data, :method => :get) do |f| f.input_checkbox 'Assigned', :assigned, ['boo'], :values => {'Boo' => 'boo'} end assert(<<-FORM, out)

Boo

FORM end it 'Make a form with input_checkbox(label, name) but hide the value of the checkbox' do out = form_for(@data, :method => :get) do |f| f.input_checkbox 'Assigned', :assigned, nil, :show_value => false end assert(<<-FORM, out)

FORM end it 'Make a form with input_checkbox(label, name) but hide thelabel' do out = form_for(@data, :method => :get) do |f| f.input_checkbox 'Assigned', :assigned, nil, :show_label => false end assert(<<-FORM, out)

bacon steak

FORM end # ------------------------------------------------ # Checkboxes using a hash it 'Make a form with input_checkbox(label, name) using a hash' do out = form_for(@data, :method => :get) do |f| f.input_checkbox 'Assigned', :assigned_hash end assert(<<-FORM, out)

Bacon Steak

FORM end it 'Make a form with input_checkbox(label, name, checked) using a hash' do out = form_for(@data, :method => :get) do |f| f.input_checkbox 'Assigned', :assigned_hash, 'bacon' end assert(<<-FORM, out)

Bacon Steak

FORM end # ------------------------------------------------ # Radio buttons it 'Make a form with input_radio(label, name)' do out = form_for(@data, :method => :get) do |f| f.input_radio 'Assigned', :assigned end assert(<<-FORM, out)

bacon steak

FORM end it 'Make a form with input_radio(label, name, checked)' do out = form_for(@data, :method => :get) do |f| f.input_radio 'Assigned', :assigned, 'bacon' end assert(<<-FORM, out)

bacon steak

FORM end it 'Make a form with input_radio(label, name, checked, values, default)' do out = form_for(@data, :method => :get) do |f| f.input_radio 'Assigned', :assigned, 'boo', :values => ['boo'] end assert(<<-FORM, out)

boo

FORM end it 'Make a form with input_radio(label, name) but hide the value' do out = form_for(@data, :method => :get) do |f| f.input_radio 'Assigned', :assigned, nil, :show_value => false end assert(<<-FORM, out)

FORM end it 'Make a form with input_radio(label, name) but hide the label' do out = form_for(@data, :method => :get) do |f| f.input_radio 'Assigned', :assigned, nil, :show_label => false end assert(<<-FORM, out)

bacon steak

FORM end # ------------------------------------------------ # Radio buttons using a hash it 'Make a form with input_radio(label, name) using a hash' do out = form_for(@data, :method => :get) do |f| f.input_radio 'Assigned', :assigned_hash end assert(<<-FORM, out)

Bacon Steak

FORM end it 'Make a form with input_radio(label, name, checked) using a hash' do out = form_for(@data, :method => :get) do |f| f.input_radio 'Assigned', :assigned_hash, 'bacon' end assert(<<-FORM, out)

Bacon Steak

FORM end # ------------------------------------------------ # File uploading it 'Make a form with input_file(label, name)' do out = form_for(@data, :method => :get) do |f| f.input_file 'File', :file end assert(<<-FORM, out)

FORM end it 'Make a form with input_file(label, name)' do out = form_for(@data, :method => :get) do |f| f.input_file 'File', :file, :id => 'awesome_file' end assert(<<-FORM, out)

FORM end # ------------------------------------------------ # Hidden fields it 'Make a form with input_hidden(name, value)' do out = form_for(@data, :method => :get) do |f| f.input_hidden :username, 'Bob Ross' end assert(<<-FORM, out)
FORM end it 'Make a form with input_hidden(name, value, id)' do out = form_for(@data, :method => :get) do |f| f.input_hidden :username, 'Bob Ross', :id => 'test' end assert(<<-FORM, out)
FORM end # ------------------------------------------------ # Textarea elements it 'Make a form with textarea(label, name)' do out = form_for(@data, :method => :get) do |f| f.textarea 'Message', :message end assert(<<-FORM, out)

FORM end it 'Make a form with textarea(label, name, value)' do out = form_for(@data, :method => :get) do |f| f.textarea 'Message', :message, :value => 'stuff' end assert(<<-FORM, out)

FORM end # ------------------------------------------------ # Select elements it 'Make a form with select(label, name) from a hash' do out = form_for(@data, :method => :get) do |f| f.select 'Server', :servers_hash end assert(<<-FORM, out)

FORM end it 'Make a form with select(label, name, selected) from a hash' do out = form_for(@data, :method => :get) do |f| f.select 'Server', :servers_hash, :selected => :mongrel end assert(<<-FORM, out)

FORM end it 'Make a form with select(label, name) from an array' do out = form_for(@data, :method => :get) do |f| f.select 'Server', :servers_array end assert(<<-FORM, out)

FORM end it 'Make a form with select(label, name, selected) from an array' do out = form_for(@data, :method => :get) do |f| f.select 'Server', :servers_array, :selected => 'Mongrel' end assert(<<-FORM, out)

FORM end # ------------------------------------------------ # Select elements with custom values it 'Make a form with select(label, name) from a hash using custom values' do out = form_for(@data, :method => :get) do |f| f.select 'People', :people_hash, :values => {:chuck => 'Chuck', :bob => 'Bob'} end assert(<<-FORM, out)

FORM end it 'Make a form with select(label, name, selected) from a hash using custom values' do out = form_for(@data, :method => :get) do |f| f.select 'People', :people_hash, :values => {:chuck => 'Chuck', :bob => 'Bob'}, :selected => :chuck end assert(<<-FORM, out)

FORM end it 'Make a form with select(label, name) from an array using custom values' do out = form_for(@data, :method => :get) do |f| f.select 'People', :people_array, :values => ['Chuck', 'Bob'] end assert(<<-FORM, out)

FORM end it 'Make a form with select(label, name, selected) from an array using custom values' do out = form_for(@data, :method => :get) do |f| f.select 'People', :people_array, :values => ['Chuck', 'Bob'], :selected => 'Chuck' end assert(<<-FORM, out)

FORM end it 'Make a form with multiple select(label, name) from a hash' do out = form_for(@data, :method => :get) do |f| f.select 'Server', :servers_hash, :multiple => :multiple end assert(<<-FORM, out)

FORM end it 'Make a form with multiple select(label, name, selected) from a hash' do out = form_for(@data, :method => :get) do |f| f.select 'Server', :servers_hash, :multiple => :multiple, :selected => :webrick end assert(<<-FORM, out)

FORM end it 'Make a form with multiple select(label, name, selected) from a hash' do out = form_for(@data, :method => :get) do |f| f.select 'Server', :servers_hash, :multiple => :multiple, :selected => [:webrick, :mongrel] end assert(<<-FORM, out)

FORM end # ------------------------------------------------ # Error messages it 'Insert an error message' do form_error :username, 'May not be empty' out = form_for(@data, :method => :get) do |f| f.input_text 'Username', :username end assert(<<-FORM, out)

FORM end it 'Retrieve all errors messages from the model' do @data.errors = {:username => "May not be empty"} form_errors_from_model(@data) out = form_for(@data, :method => :get) do |f| f.input_text 'Username', :username end assert(<<-FORM, out)

FORM end end ramaze-2012.12.08/spec/ramaze/helper/view/0000755000004100000410000000000012140566653020070 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/helper/view/partial.xhtml0000644000004100000410000000002412140566653022576 0ustar www-datawww-dataFrom Partial #@here ramaze-2012.12.08/spec/ramaze/helper/view/loop.xhtml0000644000004100000410000000012512140566653022115 0ustar www-datawww-data #{render_template 'num.xhtml'} ramaze-2012.12.08/spec/ramaze/helper/view/locals.xhtml0000644000004100000410000000001612140566653022420 0ustar www-datawww-data#{say}, #{to}!ramaze-2012.12.08/spec/ramaze/helper/view/recursive_locals.xhtml0000644000004100000410000000015412140566653024512 0ustar www-datawww-data{ #{n} #{render_template('recursive_locals.xhtml', :n => n+1)} #{n} }ramaze-2012.12.08/spec/ramaze/helper/view/num.xhtml0000644000004100000410000000000512140566653021740 0ustar www-datawww-data#{@n}ramaze-2012.12.08/spec/ramaze/helper/view/recursive_local_ivars.xhtml0000644000004100000410000000016512140566653025535 0ustar www-datawww-data{ #{@n} #{render_template('recursive_local_ivars.xhtml', :n => @n+1)} #{@n} }ramaze-2012.12.08/spec/ramaze/helper/view/recursive.xhtml0000644000004100000410000000015412140566653023155 0ustar www-datawww-data{ #@n #{render_template('recursive.xhtml')} #@n }ramaze-2012.12.08/spec/ramaze/helper/view/test_template.xhtml0000644000004100000410000000002112140566653024011 0ustar www-datawww-dataI am a template. ramaze-2012.12.08/spec/ramaze/helper/user.rb0000644000004100000410000000405412140566653020424 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class MockSequelUser def profile "Arthur Dent, fearful human in outer space!" end def self.authenticate(hash) new if hash.values_at('name', 'password') == %w[arthur 42] end end class SpecUserHelper < Ramaze::Controller map '/' helper :user trait :user_model => MockSequelUser def status logged_in? ? 'yes' : 'no' end def login user_login ? 'logged in' : 'failed login' end def logout user_logout end def profile user.profile end def sid session.sid end end Arthur = { :name => 'arthur', :pass => '42', :profile => 'Arthur Dent, fearful human in outer space!' } class SpecUserHelperCallback < SpecUserHelper map '/callback' helper :user trait :user_callback => lambda{|hash| Arthur if hash.values_at('name', 'password') == Arthur.values_at(:name, :pass) } def profile user[:profile] end end describe Ramaze::Helper::UserHelper do behaves_like :rack_test should 'login' do get('/status').body.should == 'no' get('/login?name=arthur&password=42').body.should == 'logged in' get('/status').body.should == 'yes' get('/profile').body.should == MockSequelUser.new.profile get('/logout').status.should == 200 get('/status').body.should == 'no' end should 'login via the callback' do get('/callback/status').body.should == 'no' get('/callback/login?name=arthur&password=42').body.should == 'logged in' get('/callback/status').body.should == 'yes' get('/callback/profile').body.should == MockSequelUser.new.profile get('/logout').status.should == 200 get('/callback/status').body.should == 'no' end should 'change sid after logout' do get('/login?name=arthur&password=42').body.should == 'logged in' oldsid = get('/sid').body get('/logout').status.should == 200 get('/sid').body.should.not == oldsid end end ramaze-2012.12.08/spec/ramaze/helper/layout/0000755000004100000410000000000012140566653020433 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/helper/layout/alternative.xhtml0000644000004100000410000000007212140566653024026 0ustar www-datawww-dataalternative
#@content
ramaze-2012.12.08/spec/ramaze/helper/layout/default.xhtml0000644000004100000410000000006712140566653023140 0ustar www-datawww-datalaid out
#@content
ramaze-2012.12.08/spec/ramaze/helper/stack.rb0000644000004100000410000000414012140566653020547 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class SpecStackHelper < Ramaze::Controller map '/' helper :stack engine :None def logged_in_page call(r(:login)) unless logged_in? "the logged in page" end def logged_in_params call(r(:login)) unless logged_in? request.params.inspect end def secure logged_in? ? 'secret content' : 'please login' end def login session[:logged_in] = true answer(r(:secure)) end def logout session.delete(:logged_in) end private def logged_in? session[:logged_in] end end describe Ramaze::Helper::Stack do behaves_like :rack_test @uri = 'http://example.org' should 'login directly' do get('/secure').body.should == 'please login' get('/login').status.should == 302 last_response['Location'].should == "#@uri/secure" get('/secure').status.should == 200 last_response.body.should == 'secret content' get('/secure').body.should == 'secret content' get('/logout') get('/secure').body.should == 'please login' end should 'login via redirects' do get('/logged_in_page').status.should == 302 last_response['Location'].should == 'http://example.org/login' get('/login').status.should == 302 last_response['Location'].should == 'http://example.org/logged_in_page' get('/logged_in_page').status.should == 200 last_response.body.should == 'the logged in page' get('/logout') get('/secure').body.should == 'please login' end should 'login with params via redirects' do get('/logged_in_params?x=y').status.should == 302 last_response['Location'].should == 'http://example.org/login' get('/login').status.should == 302 last_response['Location'].should == 'http://example.org/logged_in_params?x=y' get('/logged_in_params?x=y').status.should == 200 last_response.body.should == {'x' => 'y'}.inspect get('/logout') get('/secure').body.should == 'please login' end end ramaze-2012.12.08/spec/ramaze/gestalt.rb0000644000004100000410000000607012140566653017632 0ustar www-datawww-data# * Encoding: UTF-8 # # Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../spec/helper', __FILE__) require 'ramaze/gestalt' describe "Gestalt" do # This is useful for any controller using Gestalt, # should be made a MixIn somewhen. def gestalt &block Ramaze::Gestalt.new(&block).to_s end it "simple tag" do gestalt{ br }.should == '
' gestalt{ p }.should == '

' end it "open close tags" do gestalt{ p{} }.should == '

' gestalt{ div{} }.should == '
' end it "nested tags" do gestalt{ p{ br } }.should == '


' end it "deep nested tags" do gestalt{ p do div do ol do li end end end }.should == '

' end it "deep nested tags with repetition" do gestalt{ p do div do ol do li li end ol do li li end end end }.should == '

' end it "deep nested tags with strings" do gestalt{ p do div do 'Hello, World' end end }.should == '

Hello, World

' end it "some simple example" do gestalt{ html do head do title do "Hello World" end end body do h1 do "Hello World" end end end }.should == 'Hello World

Hello World

' end it "now some ruby inside" do gestalt{ table do tr do %w[one two three].each do |s| td{s} end end end }.should == '
onetwothree
' end it "children as parameters" do gestalt { a "Hello" b(23, 5) { "1" } c(42) { d } e("f & g") }.should == 'Hello235142f & g' end it "escapeable attributes" do gestalt { a(:href => "http://example.org/?a=one&b=two") { "Click here" } }.should == 'Click here' end it 'takes text and attributes' do gestalt { a('Click here', :href => "http://example.org/?a=one&b=two") }.should == 'Click here' end it 'should accept symbols as attributes' do input = gestalt{ input(:type => :text, :value => :one) } input.should =~ /type="text"/ input.should =~ /value="one"/ end it 'tags with prefix' do gestalt{tag "prefix:local"}.should == '' end it 'tags with a variety of characters' do # with "-" gestalt{tag "hello-world"}.should == '' # with Hiragana gestalt{tag "あいうえお"}.should == '<あいうえお />' end end ramaze-2012.12.08/spec/ramaze/app.rb0000644000004100000410000000167712140566653016757 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../spec/helper', __FILE__) class SpecAppMain < Ramaze::Controller map '/', :core def index 'core main' end end class SpecAppTwo < Ramaze::Controller map '/two', :core def index 'core two' end end class SpecAppOtherMain < Ramaze::Controller map '/', :other def index 'other main' end end class SpecAppOtherTwo < Ramaze::Controller map '/two', :other def index 'other two' end end Ramaze::App[:core].location = '/' Ramaze::App[:other].location = '/other' describe Ramaze::App do behaves_like :rack_test it 'handles call with rack env' do get('/').body.should == 'core main' get('/two').body.should == 'core two' get('/other').body.should == 'other main' get('/other/two').body.should == 'other two' end end ramaze-2012.12.08/spec/ramaze/bin/0000755000004100000410000000000012140566653016407 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/bin/app/0000755000004100000410000000000012140566653017167 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/bin/app/config.ru0000644000004100000410000000031112140566653020777 0ustar www-datawww-datarequire File.expand_path('../../../../../lib/ramaze', __FILE__) class MainController < Ramaze::Controller map '/' def index; end end Ramaze.start(:root => __DIR__, :started => true) run Ramaze ramaze-2012.12.08/spec/ramaze/bin/runner.rb0000644000004100000410000000202212140566653020241 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) require __DIR__('../../../lib/ramaze/bin/runner') describe('Ramaze::Bin::Runner') do it('Executable should exist and should be readable') do File.exist?(Ramaze::BINPATH).should === true File.readable?(Ramaze::BINPATH).should === true end it('Should show a help message') do help, help_1 = `#{Ramaze::BINPATH}`.strip, `#{Ramaze::BINPATH} -h`.strip help.should === help_1 help.include?(Ramaze::Bin::Runner::Banner).should === true help.include?('Options').should === true help.include?('Commands').should === true # Check if all the commands are displayed Ramaze::Bin::Runner::Commands.each do |name, klass| help.include?(name.to_s).should === true end end it('Should show the version number') do `#{Ramaze::BINPATH} -v`.strip.should === Ramaze::VERSION `#{Ramaze::BINPATH} --version`.strip.should === Ramaze::VERSION end end ramaze-2012.12.08/spec/ramaze/bin/create.rb0000644000004100000410000000134412140566653020201 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) require __DIR__('../../../lib/ramaze/bin/runner') require 'fileutils' describe('Ramaze::Bin::Create') do it('Show a help message') do help = `#{Ramaze::BINPATH} create -h`.strip help.include?(Ramaze::Bin::Create::Banner).should === true end it('Warn when no name is given') do output = `#{Ramaze::BINPATH} create 2>&1`.strip output.should === 'You need to specify a name for your application' end it('Create a new application') do output = `#{Ramaze::BINPATH} create /tmp/ramaze`.strip File.directory?('/tmp/ramaze').should === true File.exist?('/tmp/ramaze/app.rb').should === true FileUtils.rm_rf('/tmp/ramaze') end end ramaze-2012.12.08/spec/ramaze/log/0000755000004100000410000000000012140566653016420 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/log/logging.rb0000644000004100000410000000301512140566653020372 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class SpecLogger include Ramaze::Logging attr_reader :history def initialize @history = [] end def log(*args) @history << args end end describe Ramaze::Logging do @log = SpecLogger.new should 'provide #info - which calls #to_s' do @log.info('info') @log.history.last.should == [:info, 'info'] @log.info(1, 2) @log.history.last(2).should == [[:info, '1'], [:info, '2']] end should 'provide #debug - which calls #inspect' do @log.debug(:debug) @log.history.last.should == [:debug, ':debug'] end should 'provide #<< as alias for #debug' do @log << :<< @log.history.last.should == [:debug, ':<<'] end should 'provide #dev - which calls #inspect' do @log.dev(:dev) @log.history.last.should == [:dev, ':dev'] end should 'provide #error - which formats exceptions' do @log.error(1) @log.history.last.should == [:error, '1'] error = StandardError.new('for spec') error.set_backtrace(['line 1', 'line 2']) @log.error(error) @log.history.last(3).should == [ [:error, "#"], [:error, "line 1"], [:error, "line 2"] ] end should 'not do anything on #shutdown' do @log.shutdown.should == nil end should 'answer to #debug? for WEBrick' do @log.debug?.should == false end end ramaze-2012.12.08/spec/ramaze/log/informer.rb0000644000004100000410000000370612140566653020574 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'ramaze/log/informer' require 'stringio' describe 'Informer' do @out = [] def @out.puts(*args) push(*args) end Ramaze::Logger::Informer.trait[:colorize] = false @inform = Ramaze::Logger::Informer.new(@out) def format(tag, string) /\[\d{4}-\d\d-\d\d \d\d:\d\d:\d\d\] #{tag.to_s.upcase.ljust(5)} #{Regexp.escape(string)}/ end should 'log #info' do @inform.info('Some Info') @out.last.should =~ format(:info, 'Some Info') end should 'log #debug' do arr = [:some, :stuff] @inform.debug(arr) @out.last.should =~ format(:debug, arr.inspect) end should 'log #warn' do @inform.warn('More things') @out.last.should =~ format(:warn, 'More things') end should 'log #error' do begin raise('Stuff') rescue => ex end @inform.error(ex) @out.any?{|o| o =~ format(:error, ex.inspect) }.should.be.true end should 'choose stdout on init(stdout,:stdout,STDOUT)' do a = Ramaze::Logger::Informer.new(STDOUT) b = Ramaze::Logger::Informer.new(:stdout) c = Ramaze::Logger::Informer.new('stdout') [a,b,c].each { |x| x.out.should == $stdout} end should 'choose stderr on init(stderr,:stderr,STDERR)' do a = Ramaze::Logger::Informer.new(STDERR) b = Ramaze::Logger::Informer.new(:stderr) c = Ramaze::Logger::Informer.new('stderr') [a,b,c].each { |x| x.out.should == $stderr} end should 'use IO when supplied' do i = Ramaze::Logger::Informer.new(s = StringIO.new) i.out.should == s end should 'open file otherwise' do begin i = Ramaze::Logger::Informer.new('tmp.dummy') out = i.out out.should.be.instance_of(File) out.path.should == 'tmp.dummy' ensure out.close File.delete('tmp.dummy') end end end ramaze-2012.12.08/spec/ramaze/log/syslog.rb0000644000004100000410000000546612140566653020300 0ustar www-datawww-data# -*- coding: utf-8 -*- # Copyright (c) 2008 rob@rebeltechnologies.nl # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_precondition 'Process.fork should be supported' do if RUBY_DESCRIPTION.include?('jruby') should.flunk 'These tests use Process.fork which does not work on jruby' end end require 'ramaze/log/syslog' describe 'Syslog' do # close the syslog, if it was open for some reason before we # start a test. before do Syslog.close if Syslog.opened? end it 'should default initialize correctly' do syslog = Ramaze::Logger::Syslog.new ::Syslog.opened?.should == true ::Syslog.ident.should == $0 ::Syslog.options.should == ( ::Syslog::LOG_PID | ::Syslog::LOG_CONS ) ::Syslog.facility.should == ::Syslog::LOG_USER end it 'should handle non default initialization' do syslog = Ramaze::Logger::Syslog.new( 'ramaze_syslog_test', ::Syslog::LOG_NDELAY | ::Syslog::LOG_NOWAIT, ::Syslog::LOG_DAEMON ) ::Syslog.opened?.should == true ::Syslog.ident.should == 'ramaze_syslog_test' ::Syslog.options.should == ( ::Syslog::LOG_NDELAY | ::Syslog::LOG_NOWAIT ) ::Syslog.facility.should == ::Syslog::LOG_DAEMON end # We test the actual logging using a trick found in te test code of the # syslog module. We create a pipe, fork a child, reroute the childs # stderr to the pipe. Then we open the logging using LOG_PERROR, so all # log messages are written to stderror. In the parent we read the messages # from the pipe and compare them to what we expected. def test_log_msg( type, priority, msg ) logpipe = IO::pipe child = fork { logpipe[0].close STDERR.reopen(logpipe[1]) syslog = Ramaze::Logger::Syslog.new( 'ramaze_syslog_test', ::Syslog::LOG_PID | ::Syslog::LOG_NDELAY | ::Syslog::LOG_PERROR, ::Syslog::LOG_USER ) syslog.send priority, msg Process.exit!( 0 ) } logpipe[1].close Process.waitpid(child) logpipe[0].gets.should == "ramaze_syslog_test[#{child}]: #{msg}\n" end it 'should handle debug' do test_log_msg :direct, :debug, "Hello Debug World" end it 'should handle dev' do test_log_msg :direct, :dev, "Hello Dev World" end it 'should handle info' do test_log_msg :direct, :info, 'Hello Info World!' end it 'should handle warn' do test_log_msg :direct, :warn, 'Hello Warn World!' end it 'should handle error' do test_log_msg :direct, :error, 'Hello Error World!' end it 'should escape % sequences' do test_log_msg :direct, :info, "Hello Cruel |évil| 戈 REAL %s World" end end ramaze-2012.12.08/spec/ramaze/error.rb0000644000004100000410000000452212140566653017320 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../spec/helper', __FILE__) require 'rexml/document' require 'rexml/xpath' class SpecError < Ramaze::Controller map '/' def raises blah end def empty response.status = 404 '' end end class SpecErrorHandling < SpecError map '/handle' def self.action_missing(path) try_resolve("/not_found") end def not_found "Sorry, this document doesn't exist" end def name_error "Sorry, this name doesn't exist" end end describe 'Error handling' do behaves_like :rack_test Ramaze.options.mode = :dev it 'uses Rack::ShowException to display errors' do got = get('/raises') [got.status, got['Content-Type']].should == [500, 'text/html'] # we use this xpath notation because otherwise rexml is really slow... doc = REXML::Document.new(got.body) REXML::XPath.first(doc, "/html/body/div[1]/h1").text. should == "NameError at /raises" REXML::XPath.first(doc, "/html/body/div[4]/p/code").text. should == "Rack::ShowExceptions" end it 'uses original action_missing when no action was found' do got = get('/missing') [got.status, got['Content-Type']].should == [404, 'text/plain'] got.body.should == 'No action found at: "/missing"' end it 'uses custom action_missing when no action was found' do got = get('/handle/mssing') [got.status, got['Content-Type']].should == [200, 'text/html'] got.body.should == "Sorry, this document doesn't exist" end it 'uses Rack::RouteExceptions when a route is set' do Rack::RouteExceptions.route(NameError, '/handle/name_error') got = get('/raises') [got.status, got['Content-Type']].should == [200, 'text/html'] got.body.should == "Sorry, this name doesn't exist" end it 'uses Rack::ShowStatus for empty responses > 400' do got = get('/empty') [got.status, got['Content-Type']].should == [404, 'text/html'] # we use this xpath notation because otherwise rexml is really slow... doc = REXML::Document.new(got.body) REXML::XPath.first(doc, "/html/body/div[1]/h1").text.strip. should == "Not Found" REXML::XPath.first(doc, "/html/body/div[3]/p/code").text. should == "Rack::ShowStatus" end end ramaze-2012.12.08/spec/ramaze/public/0000755000004100000410000000000012140566653017115 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/public/test_download.css0000644000004100000410000000460212140566653022477 0ustar www-datawww-data/*############################################################# * Name: Light * Date: 2006-08-20 * Description: Bright and smooth. * Author: Viktor Persson * URL: http://templates.arcsin.se * * Feel free to use and modify but please provide credits. * #############################################################*/ /* standard elements */ { margin: 0; padding: 0; } a { color: #567; } a:hover { color: #28E; } body { background: #F2F2F2 url(/media/bg.gif) repeat-y center top; color: #555A60; font: normal 62.5% "Lucida Sans Unicode",sans-serif; margin: 0; } p,cite,code,ul { font-size: 1.0em; padding-bottom: 1.2em; } h1 { font-size: 1.4em; margin-bottom: 4px; } li { list-style: url(/media/li.gif); margin-left: 18px; } code { background: url(/media/bgcode.gif); border: 1px solid #F6F6F6; color: #666; display: block; font: normal 1.1em "Lucida Sans Unicode",serif; margin-bottom: 12px; padding: 8px 10px; white-space: pre; } cite { background: url(/media/quote.gif) no-repeat; color: #456; display: block; font: normal 1.4em "Lucida Sans Unicode",serif; padding-left: 28px; } h1,h2,h3 { color: #579; padding-top: 6px; } * /* misc */ .clearer { clear: both; } /* structure */ .container { margin: 0 auto; width: 730px; } /* title */ .title { float: left; margin-top: 22px; text-align: center; width: 220px; } .title h1 { font: normal 2em Verdana,sans-serif; } .title h2 { color: #999; font: normal 1.1em Verdana,sans-serif; } /* navigation */ .navigation { background: url(/media/holder.jpg) no-repeat; height: 100px; padding: 0 16px; } .navigation a { border-left: 1px solid #DDD; border-right: 1px solid #FFF; color: #89A; float: right; font: bold 1.2em "Trebuchet MS",sans-serif; margin-top: 9px; padding: 58px 18px 8px; text-align: center; text-decoration: none; } .navigation a:hover { background: #FFF url(/media/navhover.gif) repeat-x; color: #28E; padding: 56px 18px 10px; } /* holders */ .holder { background: url(/media/bgholder.jpg) repeat-y; padding: 0 32px; } .holder_top,.footer { clear: both; background: url(/media/holder.jpg) no-repeat; height: 40px; } /* footer */ .footer { background-position: left bottom; color: #666; font-size: 1.1em; text-align: center; } form { text-align: right; } form input { width: 95%; } form textarea { width: 95%; height: 30em; } ramaze-2012.12.08/spec/ramaze/public/favicon.ico0000644000004100000410000000117612140566653021243 0ustar www-datawww-data h(@J; D=%ZHkXxf4`]RvW}|xnt8F#C4mFSDF3483J(b36s "2#44R#"3386r #3L43&33046&S3M=#3*34&3CD&S#4DDl&EQ#D8&wDD(CS4M#4M$4M(R3N(4(ۗ#2H#D421"3m""2#""i"#TiuVwramaze-2012.12.08/spec/ramaze/public/ramaze.png0000644000004100000410000014604412140566653021113 0ustar www-datawww-dataPNG  IHDR@IbKGD pHYs44敳tIME &1: IDATxڼw%Wu/{W:U'y:LMЌFieK`|}1̵cc,,0rB#4y'L>O~i8 WvZ{Zsoq[Ap.k."k0zO*k ;QH) [vmms t~)E R(:|g)|󧒄p RArp/SG-6) IQ~#rћG]uxuqP {x2Dԫ,.u}à^33֊֊1wHfwjF{יsRnO2S.8z5'-iZY_<ԪVnE)cOvy6^`eüf~/xH ,!<Ó-JBtx P d.}s\+\!=yЉD"+ K`Z'w@1Hgz%,9ǯ o{7A6%x ({=C~&u0)2=B5YTixFp>|קZ@h.9CJ G.Atn|O9!$|6E[ÝwIdM͛ǟOwQJ @2dϙ߼l 1a$ab#:6`~nN(_'Kwv^-BMׇ~(K}Fg==?mɪAMAmk"&K0gO![s^ن(xˈI?f )`#;OS#rn. [:@%Yisw=[@/طlj2v)׿is0`ֿ+rj@A% h9#zh},a@\TIw֋xᏴK3vet/ oZ:{ xׄ2Mr))۱!sm= k8g)8~H&nya,_iA)m}J`ٳpݦld Ӥr˯=Ct);e?O@AtFWX$8ze|/BL󦢽yatw*ܫ&v n`86??̐sȍܗE ni9!nNB7nulheC |$$ );ujl4{\-sD@7.gL^ ɟ5 #6\1 >k=JP .D9p-jLum10Yس$lB۰dP`\[qsyv%qXDV_ߪcsGOZ!-*q4\eUHH XZzDĽ {*/dMUʊ-@^'X~2$Ȳc8?Iùqmq-ok׮)4M~I8.ղB; {yCk!|hT}{<87[j%4eZ4ݝF /D}#G! }5r <SB Hg]v"5Ð[ixש uO,giQ Pq"3d2juF2C %9HkV /-QS fn> 9u,6FFGL3r YD GFaM `;x=oU_d7Y tZ1cgt1c ObE|6RkQemKcC W>aAzX4zH[y˽ұCwۻ@։!<]/N[1sEo ʔeȌ<֌w]WOaw}Cpeؾb1GV#t:j9p!,Ԏ>PYȠ}߼s_3 PSjBRQڿ*´!G`j|sh+|9/I~8ӡ@x2䀁jHt] I۶{7}7**8OݞṶ!- E-N: !bm};_QEKKK [H >%+FѦEB=Kv@s$ W0O.` [Ü> Vm[:]w-3ri9; :ڡSpm?.kbb➁#udw'ڣ[鿓;*'+ߛjO~ϯTp]4W8!TEqN4}`/:dEݺ5P==+w(9{9|U- j s>2SjgO]J55 zKtz׻^&MgGҔM *vZ?uV.E>⽟,$ װ~DS VHu{k D3k ;QczJG?&@"#'/ l#7xeimiR6Z78}uqw.xF+<Dz_Vj7:vۛ3rl1vرUa??|_$l|k/Q&PM9S+ȑԴrKyor& '2D3owьoښǹf`Ң|f|c5Y_-Rm]ѡ2IVp")KHe2ԥ$ ,0O~s=;g-2ޮVVMʊpc}`+4΋(zDc7+fAlӗgA fV*9j.9\J{Ƣc 3V&yqIogZIZ]k$/; />us{Qd0 &&Gn4©ar}"ibo' ˸ iўi/*x%;Ow-ZnEr}K([/'7PT_:Ոv86X8RD\'pomu/ӯ|.p+Ek!eO+ZysFG{󏭭=j` CQ 8O|b3QF^]⋧A h$U˲m~"{7"wqԳAȱ$bPYJִ%Aͮ rCȡז>z*`MMoLX j{/{d&vdFvY}A+GB|Y!L\ 9ZU{R_. D9Wk4RN]L ٥7Լ&jE8 m]B<I+?,k@@xNvFpfKK]#jo+?fq# ,Nhi!|w1NiۍE 0p% C4.jf beVއtṰc#"+Է>Uڊ` !g .FL%]Wt뀼+G=>S`.@~=Q(YZ([Z'Std_EZ^*` \;zTh6H Q0ֵcf`FמmK_o-bYc yu4s0`<# /$j0)$W?eьصo*5y+ RB !3cǜ|w7e޶n{ʾtxlcjP 5 6t|,,{ZY`Pf~;.}Eo!#ѭW^"/@#D^. 3xăH@|nkЩ QSUgXK=FGG ͩY*LOVX.mj;xǍ ,#B/%J Y$ B4R-r9Zb:ٯ fN364!RcC]/ Ji!׊Nf9//|WL0$es<"0N6aJ^zyϞ={xGVI S4$nv{ z͙_+{~|'>#΅p׶f#b*e{h4[|,G~Ѓr4$jN> z%60rp\I:u]ƅ^8s=,ܽ +Mu8&'&>6K_ѳIxw;n\F0`aO!Ŀ|hW7Y՝ZcH$W,T;]X9$%XnYB G-JOx[!  4]FIN1%ksv 0 Ih,Lj vPb*5n|%}DF׿[/B2a@U fw`8ӹnq|#Br‡eaYw<,fXF9 B!5&X%DARL^omUF0nNn$gҼSB <{YjFS4Z\Z;"t'H Ψݾݢr|= Ob6;FzEh n)vT\Hy! LRgffי~?v^|T'1:}|U؏\EQhk-] 4΄{q8 |%P D4o'~=\,Տ<Y{"PY,Mcj-[.vĠX#*v?Qu˅FO߽ygjjD1߿v*fןij-m|G'A-[v~kNm9uc ~c;gVH J_4zq֎Doj^6]kYъ7ZSNy[sgN6ia*1PlSz1~j ĸU&Izbdm]-{t=~Wm^7G]U0;2vญPD DNs`,$RFvVzPʀF="Zܫj$ln6^[[2MfC\ S x6f= o &|;6 F`T[Q8 mܤ;;J9ض͘,  !dReɥbdn=_5lt\XSRjYUTPY!BB |l`ވӇs٫IS[vayI2$F.(Dy m~u x ʪ{E7E¿HǵR HdlxêY199i!g5QTf,9e(t q@ ]i*s whz63u_d#F$qӇcu5jG|6begB FH@oJt`Z]M 7 (h|l#|D(Ce8FW]4IU~>p< Xn{Pj7Ujk EmݙW%ocN 9`gGEg~I"BH@^Tc3bnڕ`jp^'B0"}OZFh^(Nk}Yڂ/VJH[$bȊ5''ӿ05)/;KII+ϗY PI]) KoT!lS+EB%j8T>%K|?ׂ7_tB2K H[dhL?$qABFR֭[ӓ -ڌ}XK\khM)7ϑ`4~s%\*}ۣJSëW A:H"n+=37&PҝD&Emr®MՍI.)rWX\PVdjXEpLJ$ pk"?c9WC6L_f @n}gjP0ddg4ujtaq0B$ׅߨ ;zhX3S&lbU 84M>OZ6 _߬%WVPA P@dQI }H7Ֆ=}k2%ք!6CĄmBz U+V]@ LM4L5g9JDad`¾\fZ\FG/P1,$IU!)*cN@Us gz{{n\ S+6 ຑ:U$?N\3@/N Z-m}N&w]n;9vhA3=fx}H B%! E%I0ѿ"B$\  Ck#ܪ 5Nz,QZ^*t^ԗ#L_ròu_vojRLe :Ո-FqE [n-aLKS5PkAJ%L7 IDsTD` nk%rK4^b; (Qݘ>fNMtqJiowS~eddxwb>\ |Y3^-&; `N">E=&|su F[o|;y% 9P<~M¯+ B|ܪ]Zj$PG/D6w vTzbe$ґMLL B۶y&{v:<ߪ :!)0!VHzry>|k96%xSrj~ޱ߱0U( {xGDXR)߿ɓs.o~CF+*\B#BhW*9A3Ks| %SJ7^!X, 8P̂H2@m?;FX^wU_d@\w3xL6ԗ!5Kx8V/fwA GBAU:#\V`nHEKHg)} ^=;_Obg2rs jg9ZD]);xKs9flnGBt6_:~JG#1EZ5|IUsHťU-Qh"D LrJ`N r{G=`R`̉⹅^Vo+ԅV94˔_PJ9Y! \x?(QgoZVW !'VwlZ7sŀO V#e`?CPzI>IrρWZL&KYH Fs@Yp, y`L:*ybiXrF JT={?`[gƠa0sN2 'tW9TNwA@|Khsk[{rii)`1 57n8p`15 K(܅)ׅ=} Eow]y`7 Р GpKy=#E^ѿ\ݾk٣㻫ժZ KE)ǬGfWAL4 tf`\axP0$"/YX&D:DPuh p ^M8EYSX}>J2`Q1{BHW 1Xu0#dKaO n`]QK԰zX"X.+z_O࠙@[W[m0>Ye PI'{tBQK9@?>|xR(4t20F"w$BIA$ȡ(|Q-2,)s9V1M'$;-&|x²,?-Naex@ (@?~긵 )0b/%ũ`__i$M;=b~(}c',s˲$;1jiYK;v5$)Z$}&A.vVpܫ:c##sFڂ,7*^0xW愒 # vRf{ᝮ5"NPI&QߚTˁlvvv3=$t λ;2FYh (vʈdŵL)`WwkȵW\v`Ν>Vhlznqh#1v NHA"ƶPA9u\)A56k*O?4~GJ9SONdYmQ* 1=쬦®>꓇]:n?/;G?2LY A'ئuSB7 {_{־*+w)Y<,{4Ѹۣt1c;=c;,Ǹa%Z,RKk  Aj}w~d*DH")3/`*s=| `jVR< 53O8qF3-\֫/+Ս+v~tƳd"3ARSG ~/^=sٯ[$t C3!H;x3JiW+#?}z<_?c?k1Ɣ /DE,..Z_1&Or9F0 bǎC#'t~~>]M6(o-F^e_ly ٕ9{; P ?7(龆!4KdvS^`7?8<&lbYvo׆h&fǜΥ^^R1qΕ!83؝tNKr2|eKY2Ӄ8iG2N̡QjGmjVAltZR&/RݏD/I6E'9Bj"M{uOŮ&PRNа)wzW yZvF =ݰUdxTB(& &UYQ rM IDAT Sw(5^N)ߕ;MB9}B "YZ/]vv(Ow`k5s;~&"TЛsHTe(@XH]ṴX73}3H߅ 1MeYvҍ%FB% enƙzܫ)nnI.AW+W0WMǟC.}(K9qeT2bLIOMd*U^m4y >e>n'ht"%EWhz Q ~v,r5nPBqQ*vlnn2M):{)[JӑB!ntj!XWNGsmf/ZY}ݏ6f:h:#NP[@&9S 5#R<] .-5ۥ͵\Q^|豂Sҗ>ϚfcsjZ#~ʳN-!@m[ѤKUDQCB{'Sn+Oǎ,L醍pG2%r_*nښw̙f }@I)]qeqzuG>aX ðbvPjZR-&#Uj0G ̊R50BM"uH ] ׮EH{QKx'CU'R[|PӮhL!?Xw￑r[TjRJJ)Ǘ{,隶ؽ=e^OzUH߼#&Dj2E>rFy :΅3g[vtF[: `D>H-#" i$%*vrٱgΜyx,H);Rinܼr_9݌fޥJ޹]Qm3;+ AAybİYEBA{\v/r~+OCEٸuE=sUfU`(o٨]vo~o8p@P-Sk췕Y;t]'@q߅B4H!x3![5qU2\M27= J—h5D^7^}շL8Ap?r,N"PsPM \< R5_@XݡTpR[ЇR;1c *pz8fs ̊* br5q;L|wj527>>QJ)ޞk{v]n֪ )% ;k.toKGU. 2M9w~ W:Dtf!yN0Uxi~ǒ"͝>)oavȻԫUr 7.HId0=C$dv"[8W/_,BFA}vjPs#933UnrZMMi03mNnS*6F 4NeGOZΊ'Pq@ 0հ B~iwUO1{T_C d2]kն |̴qЉX6-KdZi^FR9rO'~u y"EqQxwi\~'u]1S8ˈ%lQ/2 8$5AGPY $skk֏ {MntKi /A&^:gJJTˆmek߿oAך2Ee (Ltd.ƈriDzO|{m|~Y=]K;x/3K)e2Gz,f>6}Lo['mJMMBJ|V‚Fd,}; 60)c2kwtS, ep}1*aFQuT rgugym];gKM\^}J9 4tg0K:uPB CGn~Rmel)֋venЇ(a#vO^&Z7bE#Syᇿg M͊WBZ (P&D. E04ޏ Cjc"m03!x(ȏwisyT*}ޘ=[=Sh⵬9BA06&6^jZVvVQv,>CH(KfwSJ#rtNB@6N#hATa-(U;2{3a@:-N옞ks 2z9kxzьW?x۰V AiHz0|x٬EUaE"6='ZY>sP7jyw(Uzmt-m\HۊȷnWk}N#f1#jAs0W+!1'd A(z L6u]oʯ댲W`GH$ؒ fS-H# $ZUX Bȿ5 bo1@h&>?A{|yC (*oLAuz߼BRR#7Oʓtk@] 'nfyjIۄIX]~7YOQ97":>Hqa!hTax$bPXnl6w+\W:znf"N{425{GQAy𵫐W *c_ba6 #q'nQ9ԧd~"jf'FPD#:UCDQuVYmKjӇ )Urڥ4kB@S7^`fUMkM>}dn`}_!$!X<h:e9ֻGh6蒟Ð_p>֍+;D2h4 TxzD((h'ffi>DjUiˆ ?3GE|pBT^>*rtnNk$Ҋ0 5|}C(wv1c$0""XcfWEZcs?s{Rv;럹d Bt.@82G@Vx VؓM UQ{z4#`3GIljfZܼ_Hg%LXJGwݬ"oضvmagP*u"[AF$ F (Zq&߱z3+rƵvuQFKJpbqh3%E,]Ү!~+hLՠN"沔<Ɏ@bfΕL }'Ѵ/܊8d2hg8 qlǏd75OA4*Nhj-ٮ bc|\oo^P*V#,So7Z x7/A1-xzKٸ w+۠Hj$<#qh4ҫ}n,/' OFRKKK+i?.w|$Զ Ȁ; LeV-ȫxR7`YxK_'B-7RY26 m~p7,xmi8FKςiD"22~bicMNFX<|k_y饕4"`Pn27" +gkϟwn렯,׮r>jcl4(;uw0yxːٽ3; ;iHd=^]9ՎgLCwj2_B{h&%+}XQnw$`$ƶF''෨ :Z5WZ> .S@5 :^W,]%DƦ%ګ[xr*cWYյuwfGX:n6J//H-cm 4 rs&NF]vuiD :e _}VeTF_7ɿ~*쇔xs@Ub{8 p+[gu;0[ujn-MUէSTT*5O:;ٳsssGh yFlr&6*O@p@Q}h~޾rq6[nH!K7;g(B ;,d fE 8A8䞇fƗ /--aiiMFXNf(&`L]QԎ٬w0o}[/˷Ӱp8xIR%PPDpס&BfF&GեOroK釭ˡ+8+׮Qm]f0I Bf~|ٳZF03T_̫71*8BQ WĒXC=43tn{KoӬjUPr }@z zgf1avy jnSWeR@0` &[H.pC(ۙowF!{awg#,! U7g*i@=ni̻ RPA}G(Bn fXnʳOZ6ӅK= ?Q0O(JֵI(*:1Jh_Lhv3?iEQuea+ $ z>?(E욒kjw}~)Hh?<)mFtsP JERYPtJ;92.?ɉŸooo0|m+[ [gIjH{B d 3Pu",B-DzǺNS[am6^󼸘;aFa  xiMvp$Dv ߼yS&K1Y] \#(8$@ v(@Iߨ2fډ O?yڵ9&N>H{pIfhoJA)@44ZlOMMA\YpgPz AׅO~ԯk,) {T{w_:<37S&џ8- 3N@ D4;F`ٮ#(ov 7 cܹs&/wӉ<&AD݄ AMD IU-|`djVZto.Cr"9>#-1 db}`^9ޞXȞsG}vְGrhî0`V"Sƃ~(wܼ h\pAy˾rK|J}fݘzAOt sL?8ױ\׽](natȞuЧDtuϠ #7H =$]T7rSb osqjhٌ& h 0; 8fOinjwNJ/??/RP#&}'F%SI5ARyX1_~\+#l tw㟭Uʥn#ŔaAz@An/q^ 0Q>ϟ{c5e:f4\zY*؁hA^~ Z~n 撫&ҩu>;^~u^cеوlV # # Rh d׮WK˿#:R􇾬׋ (:n Zv`0In\=)|p׮#LoZD7kkk?X3C3ς7P}kNR n p{d2l=O=thvi8Ӭ;NZh:-AEW8z?T0h8HO5DҍDռ\^\v\.y۴#*WTwz]dPuǀ=@JZa◞49E_-{ae`1)fN:^Ёnl,ɻ;Zkס[@ xKHjىuo֦68c7(!v<ӥỲ,d*x 鹠xp6Vcgx9/zrō}"F\L)n]DW+%⇱Tj rE,0 =t heF .J.;|p̅~~yy L?Ei4PPSy@P!JFV/1<(icTMZxrnq=S3vD]܎a颥Nۘ;0HՀL!M#E*!tsBa:a$IɏUrY(F q "nVVO(tP@ T!wC!C#6T IDATV#]l*73Vi!ܸ::݊H,}4՗`-Ed$Q 3%ea둁ՎAF:N})=p^JnߧR)} aƝF-{o\vUK L H*k+_q'RNɝUFcqIc<3FAH ] |pρ2.d",khP WPţ"YvM) ̙H'ۧw[>%Cgy&H Ca,kP'h4BU3TNQU}kF'!C/xՊGK#0"Teܵ%) 9} B2?R:4gt.2YACիNa Fk׬R r2nDb>PRDFp׮Bmje /=>C'A4 볢W7s$}0u'RbP(Ջ SUy%j#\w:(ig(@#S #Z_ɢ%ۼ[/a }/[81PJ[DM  d#$ظjE0((S M(tYN`iAv$LBט8ƚeM LTr!sX{2C=zHPS(0vʺFWVVJ„(߈<0 Su6pDy(:@iU5s4MҚKh7. )Ȑq.8bYD%9"nr{[Q@ bƩ/S{u" .={D"lJjdxeRz"S'Ǭ8$RfIOIxC иtgR%p~r]h0Kg0|I4;FhZ4.IqFxMٞDIޞOZqvv}iUCa\K^DRJyjF|5uMo2- $z iI{;E40dQ]]"h1fnoXZRe|;FP* |"mu^ J*Z[RE$MD/}S|~ӯ *&9J|U"nSI]8"hK&r{|/1N9$ €oZlɓ'O~†Jvl ,NTpUUKSFPJe,cǣlntȣi|\ٗigD{{=ςsx*f ؋_@$Иi+Rys4Y\\tx≷ kN&guP0Zedf)``f^ya oc]?4>5?0˗7jU#qA%G)C{DsEUp3iх]\ zاg*[yq!%QJ1jj;-/8cǦ4U-G1y% %>=RB5-MP+_Å/ )e[d<Ű'P*XmC7 !]ɝoiڷJ otOo ʧq5ZO!ח$v~o&BρOXnu[`Z}r57wk$ csL/H =uspB8铿+Y4:rx8qߢȌ0%Z<K*H eYį/$h{{{7*i0ɃǥQ=hV7$D`@y{䢚ޛ:vb^{TRZ-y+qLcsUO-L)ᷛC1m=½ZD2՗&&ݸq풓)%Kh*?#sH wi_ T;"fR^VL.*{0gm܏&4ړeed.aFhw:VFBJE),*^%/y̙j$z͆T6:Ca T鵼̂i6N(mS i8y4>7~7~#їll_< @78Zի)/oO:N. ^;;آoj6N^)7/y$3VD]?prM;St^^/*w3s-J,ҌǵٳSN8zgy0*3:R=};;tDT)5{9_J)o.]|vb{ۥP(i镕+_]M䣏>JO?#J,>5@,C=ľ~KJA۩dm466Fh<姏~/ww‘}G>Q-2~Ȱ<^Ͻԭ~p[x@8COwnAﳲjQea@5:pua}]#es"rO9^be|6^ᆝdIvd>^{LtG< }]@DU`[EE RxM{pXqA3|%P6{DsǦhQ]bgƖiZ}GmՋ+I&"b=ӟ ]i5{gpJ ;~RdOBfԒopqᇸHbBA2>p SQU3;t{./]}u]3-5~݇$4CWC)7KhTShP^rϕdj1͗Ηh"cT(!ܩtVGxSYl9::G=׸fQ;̲>s& w:X)Ē+u39kK/Ə/oEjHi-_ ð;ijf/b{UwQ#nIk*$Navs|&Nj3YU8KnD0ן*nBu}?%,۔ʵIS;0c2܎C& -e-(1W6l,Q';inms[JMGWZ<%Cՠӓ4𸯙h7_kֻs'n!TtZ6M3|f9,ۆ뺎|0D[beX8> #xnt(DfnI"^/ä@rjnM2Y=f9jf iV-EQ/CJ.D^&*% . ^$i!J$JPh˫׻"]'̰dnNPq2&Xe5vJ9E= B/}ykPFGZ_B"::A(/~3 7ľ>9wo~*XdQ)EƶaKډ $H8v !pb$i74 '=4-ٝICo|泇(Flپn=gݵ}kR3Ws/oG[}qњLUui0P#d S %k^hҲ"5_&`C[7_?ˁQ [0܂%s>6f,Bs&!*G֠F 'Ay( Wv>6NSg`Kgτm/ !\Cv@P߹) +jfepco* nZ`,*p20yf"渐"9J|}0Yb껷wݾ#wl[Dɖ=0¤,&~c]Ծ@Go*N٨33kLt2`t*](OFrMkQBX"F !`@ %AUI =pY@)rf7 c9@fY*tU*} ,B*FvϟҙLUBKƗS10UwT) wڄɒGv_M͠+'"pk0Cx"gF:9VlԾgHwغGС_p@S+=I {eӚh&,d HFE kpcdۤ8`S",rrQ$ja m C0y$q[SxƈrrFY;yB:!ₘ k/1G IE0g)(w"%9g=4&ge-xkJ͝drY t&q˕NP̸)';ҫٙp#;TE{)sNu/Z+鉶l5껲*%#]硭4'QG38d;TEfGx~M6o00<-, lkl Ydpj%8 V|l'eK漣ED`|zcߙ<%t6M`7x!%06'/zpVUᄼ4*FBR aނ $5*>l] Uu$IYȐ*q|e[p_}S6Y%xE?O\k]#&`a7mC+{x0\1::yzEwl˂\" D Bڽ+WXQb~XvޓqsrAhmx:z7bI@S=zI$T^bM 3AJɝ%;|Yˇe{F  o*ܯYTd adcCG6 1bo/~S}l `/٠Ѩ ;KKXu{kA"B9f&6@ F5Yc92~n)^jF/\ G`5w̪Jʫj܇t($K"1N'XxFJy=e9&^4x՚kۂ|΍DrBޚV'v$ns!6؆k{<]o$ukqt<2lgZC1 +"1'H"ت5Q|B;F=w7:Y?4SuP. <^߻'mG߱,֮x}^CD{פ 27kϏsg}Oygj\|qmռeYokksNeL&(~_/-,,|]Oj/F#8]XgJUU9s iru<cP%ݻwݻwQi9/ ?gY֜3ɓEsa6VIl;x ZV`"j*~==t(~VoAt2cd8js|×}?'?L|`{|tBrk 'f_S3oY"%pH'0aReeU3'|ƅ>~){FJym4=}B] Y^Gi:QZovjx:,lgQ(s؝9؍Lcv@ 8 %e,H1aD0Nak>5ly?ɟ0zнor4{DD~K'\$412fa'LZ൩kųYhn/S'oݺ57UoTܲr<8Jd l2iJYݻw%XQ<|sa6iZ ʿCw9$s-fN{"iv`l+gqN%w$YȀm4jg{>"X0NcPs]IFmՎ8A+hݷo ;y4= Z}z95d 6&lRD aM Z؈:x-_Eh%Umfמ lΆ׮]_z%$U?j#̜:7=t!y k."-2td ! zB%U<tZjat:IUUb8oG{ëIܨ&I( zƐ_8<ۂFj`TT6Ek-OhItW2ߟmϿx5UU߆樍!#:(ƒlVgT'ڸtQ ZVE3Cy T/af: 0шf|Ɣ>佺)ܩVzkinyvv6lZ#u?ac󐊼PiwZC9fdj]DU6`zyA؞_!% Mˍυ*;ȉo>xr׌=%//0,goz&972YjE%9 "` !>4AJ1.gv\-Șa[__]VKKKz U}We{gXZ.4qLhG<,y۰ݻhDܐyV0 1k5k}¹UfCA:Gm!cQWYܶafZX2r+0JNH h&j/mHUFi쑪PO.[0q]NDJM(pz7كp+qS#";_gs 0EeZO9d2Jc$[/Y.sp`y[JMa`a8 ck:q3]3wev:9â̺ΣoR;\KpF0)d8R+fd5% y\ٟi t qwMx)Gì!N&mg~-O^rxԄbVPeS`a$,T1of#W`p@504bcc&ch|:hG3z_z|ty8"zC(ǏÌBF1sXja8{nV1|=k ؗvd$%0 #?\3'wYnY w%Hngn Wʍ;ަA2Ұ=@q0Z 0&f9,+|n;Vx{W-,,ȟ[QdpcϚ˧<J)2Qty1\0)t:XJ,H*KV{]{qXw.?Vo۷;f89=2bٽw4˵Io㆖;슅vjphm9( s(1Zܲl"Y p9!_םM`$1ƘgZT:!TtwTNml--5<_oېol^xZkbZJ9uhʮ%A ޕEC)eβU֎?;obTͽWM2Lm++++W^-> 8z< 0#G-5\Froc寎B\:F@V@!KH!]Xc a 4.<b eAC6kq d0Uf>Ys&Kh4oҍC;0v ]>;GਥQ[x1cz}Xɽ/}dV[A+nSOI7lq?F$ N&T0 @0~hϢq]`BtrY`ru g/m e|c d`q -g fvy۫`wڸLLLqUu__Ʒ *Rf_z}Ӟx*h,Ah ~`} ( *AD0s!áz/~w$=CU}lrE};q/q:[Zk1/CcBWFm3Y4/f~ߒ [gƝx읭޼:%.,1"vYTQ%X:a qxHp*r0C5GYpˆSkN?"S>tǒZj9WrԜ_e\(Wq,gffmo>.Nom"yy .6V˄'҉"e>U!`򨍬Rdlh̓u,ޕ*1h䉸N41f{NkُsZ]=;OEzV꾋.`x7:Y1&Z.T3i7^KZxۻe(Y?ޫ|KuS1&@Kגw{zfa g&U[ e)骢C!'C($TYqք.3$F9L[a-DPyk_L&eL :eڦpXѐ'j|V1|}̼Ձ%<."jc""cm #;6Ve;y 60>d؎fKUv3}wC̷,kӟt+d[fhDO=Egcˢ!37 ml]IuRq2$J$i Sęܼ3âS8xзtTI{sfEi #ȠAd̩(k_bfӏ12W`5DΆLb[p!nC5ׇJְ-2C9614FہL'( ,?4ae̲e{qqaoFc`d۶OO~Q< PtnSPXňHrJeypz~NBS:ꗞ&]dSH@|cpMpG> Yr/a<*un>%0ټ!() +@ED Ȩu$cU1M-eBvXzL%l 1/n憋Z߉Hض]޹sA7g2xk?D4oGOrnI]a tCBҩ(j,“le E` k_0f뮑%'/!xgL֝߭"9A "?r#k8 0J"~Eef9Fyȑl@NFT%P57HuvϬ w~v"I [Vg~g#ě61Ru@T{&=p'{Q%9oTko* "GckKsyzЪo޼zȟ,dVƔ uRDE0Pk1a 0pCʍ!bfw'#>5߽fvy߄||Ÿ<3Ɣwot^X/7} WgDYU/Jch)!Pk0=fxl,?UnCYIyr7-{\Fc079gqnƘNJM92%R) lz^ _N~ o[<E"aڽ{N!s\jx}@yCReLqyAPOyh X XPRAU%7$6;6j3~;-~+3+Ϋճ̉H:i' m`E5!=<@0j1` ID 5Smfɛ_ivؽw,9D,FRJTJ^5_[&^UJuj5[t3|.ci8.SJ_k~i??~~{>FHojO򭩵ll$L2]p֚hHl*'BTth͔mDg>T_=XZZrz)o%Xkr/Zw]as\(ւN& a7:0E! RI1}x+^k S@X"Fpҝ UɜffVׯ4 \‡sμ*JۥRFx \VH6gg EcfʇG l8N5 IDATV5cr[W^g)|T_;"ڹUlwJ'ytOU*"Hb%9yTYN[i%!&kj {נunݺq*,4UEQ#No,Y͛y?0vczaD:HLcDX7A 50ݽ^c1Jjs<01'Ÿ {{{;+++ʯ|"ѷR]~e.ta`*Ka5ې:eh eSBPg@Bہ۝S"|Tww=mʾxx<˪a{{o_! m,Lp%vO|)wMF *#'ɀԸLvn^}ջ7n/ Ur8Ӳ"u=;mGu*&&t@P\@w.|ja{x#V}d])g9Y8+~^#t( 'GGZq (퐥UOw6r+UU:ɄgE˓Ddf"3 xDYaM䅤7AA dz?v޽ řkQ<Ɲ#Cj2 6 D^ "@OM}s"]o *CpOC@)Lvj򩹙y _;#Ȁ:2IPJEEQq?`4,a/)s L"ۅGB4Bv]6OF^{韵H~zan.<}z ~ CS4icjeYzJkz♰$NPL>u,fE@ƀ;ޔZ3P+/W^,!dB5m7̙3G?Q|6ߧw^ZbqwVa4xrLc5Jcp![/=}qsSx`?,yE6x1Z[<,cmOt/Ƀ8%ht"C6!׈&[6HTG`n0Y~ dYd In%äW.ZcMeY_wm>zz2r{m-cQU~]zt@0yr0^fyN ņҖC-f @0YVF[N]ѓbG̙3tgUJnjrvxX6js/&  t4ןƦ6A)F3PQ_ {vӍ]ޜj}s/1ZIA/'D5FrPNa tfvVOq8x LS Ҷ˔6JcJJ+KS_+Ns>.RK)ʃE-|wf!bTEc2A}:1 y =U9`٠0jO\C{a ԠGҾųviəŹ="j~?߭`B/1R)%G0|Yq*--d 3B;s@g eYBW4p>)X}3-F)aaf˲_k^]}yzxoz`bshy3g\0"|BƠ{1p }H:*`Uf`:{P!%LJuݡ0k|5zRd[[9 I@~L ymzp<,; &M e@+ɐXnx+O=nGId܃WHBi;&Uo>[no RwfחJX lzM ˰grztLM:=z 3ʘ"2%iVp6NlGVl6Gy+T@ _ي,I Z0A rdn; TI$Dn[V==j6Wʙ8ai/ߝ>H0}wK?̄] 1FNo]9r(XP+L^ެ٨D0ہ|hSX:ktwO""Yⶣ8Lzij` c2>pAUuhۙCX!ʑl伲=UKGP!u[EC!ʙo‚rigrڭ+ݾsǯ.h4z@JUW^xNN{A: x|&aqh>&5e" *O~2i7Dix G "O!ۅ`$,+o{AI)bq֭[nc\YrXyszcv-痎$]T}y~,xn# h?Z\i/ ߸l 4QYOUQ TJic YĹivk&izPV\X rh-]5sG `RPL2m$SKfW`C`:X?h m;mQ) )sSg~NfӔtes]qtrL@Tgak&h:gy3wYycl&C~ %-`O8@ZQ\=Y_$H[Ƒw"fV9 W/&У>T{̥dG9Fiك)5WIMǹXLT<)al6dUOF%q2  dY4T\?WGE;]gMo|9I_GNl2],9:WfwaozjQYnnA̜~vJO#FX9.TB$/g -(t\&,,”gxGw3P̴eC_*Jm|;~GZc&23V?'vBA-ˆV̰r\ہelglaICPs Z+@a9`Ie# ֨Mp4f1֍)Vf#U&{gW 1"t OXuI+8{Q4όN ys}RV~HZdzDzO ˅ogQ?ByX$J_?}WQ Ţ|c@,(~#JT L@OF`g/-q֗f",y*(HHVVZ31 `@׏929aU;0P+"M'tYfi&200F@gHe`@:K`Bj9a0+9 V-ڽ.;bbϫ- 3Bc0moe:b}y*)hdy(9u1U=bvfUfw^e[ LzO:q >h!>X hLFD@yŶ۱bEZ^ݟYTpˏU: ߋtؤڐt`@g`6oBOG0 95!K+/Y9AAMMYG -%sќ1f"(Ni^VQq3CDWm2{TPY 6.,C(ӾS5x k9^ hv"ǫk曯}ҥFDLAc1jmmZYY)al7n^z5vF)˲Z2EQd,#"y6rY$hdݻm<i"ch !)en\}LwdGexRSt3u81=+C9 q*@SZ=%Hc_{v=a=o_?4<:"c,Bڌ?1 vr_yG‚&̠^ro,ߛscuߐ#ļg};vr-8xsPӂeYGhs6v{}aͭ +fr[y)Ԩ8:Rj4b,r4 S{֢֖4I _ϛ8[ުP |reT?z±k)9.y.9ڙ&P04J2PF'ܲEwOy_ULVkz56r\\=;%u!T g3 ~1`F];RYP!0.hMnuFJ0Y6^ubMHY]N=~[wk i;iku1J殧BXԾ?[7EL ui$]bD1vSq{ڽǝ|h? iIDAT#S~Da5*S~P v)PA ^1-dK'R7o[ 'X!ihgd1RniB\(=Jǎ\ByPv-(]F<("jV<(rR.D9x$e΅eJ4c `&`` .1ެþexeλC',K.=vGTg\NNIc/_ߺu+FZX\CFo-L!ƙAȅz^ Xa:Kb}jl#챑_9Ta=#7.y*Jk¬NOgvЊ̷^R/2ȉ~yi6;.T$;EaF}wKfVgf?ӿ2mӧΟtټ~hjiR-YjȌ`{պӀ58})<19Q]~}Ӈ[1f|N $l"ɥg7õX$-.d4vejxƍ'帉eس+k,'P?;u9 !ׯ f&,D(9,?(h-?&S/"tId!Bьo_K_K^]p5ݸu[ţ } s?s"n?P,Ӵ;{ز"".Hq+JqYX]dt462[tcpeק1̊F}bvR!^x<|3y6[]"+YuׯTVO (i:R K3AŨ i:~O;gLVa[QV|.7fױyΠ&~xaVrijx<#}A.K]+(㤉qS;LǯZq󹙹Rx:dv’Qӑ4^sQO~BWBV;dx0zя~T?3GR, >i r)W{[)kFXvw/BR_`I"\JUlylvS0 ^ 坝K{[+'NERqz;_?N%rX3s_b,i&, gi|{qG7οusݸsx_1U۳rfs캮^]]5&cah~~ Ȯ#vA`:}g/'_aի~X,k\c&AE"7ƣh0 xiefmm|򓟴S3^G;;;]nEL .Vo}ҕ+Wn\t)10!DuadqTlY,fggC۶yz/2zS<!p裏?|}}]VUZZZRJZ-9ŋ^{5 /"%I{o?}49sƵ,u6 ̽{=7j5|8ٻn~<^˲rNww>wƯ֒݅IENDB`ramaze-2012.12.08/spec/ramaze/session/0000755000004100000410000000000012140566653017322 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/session/memcache.rb0000644000004100000410000000240212140566653021407 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) require 'dalli' spec_precondition 'memcached is running' do cache = Dalli::Client.new('localhost:11211') cache.set('active', true) end class SpecSession < Ramaze::Controller map '/' engine :None def index 'No session here' end def init session[:counter] = 0 end def view session[:counter] end def increment session[:counter] += 1 end def decrement session[:counter] -= 1 end def reset session.clear end end Ramaze::Cache.options.session = Ramaze::Cache::MemCache describe 'Sessions with Ramaze::Cache::MemCache' do behaves_like :rack_test should 'initiate session as needed' do get '/' last_response.body.should == 'No session here' last_response['Set-Cookie'].should == nil get('/init') last_response.body.should == '0' 1.upto(10) do |n| get('/increment').body.should == n.to_s end get('/reset') get('/view').body.should == '' get('/init').body.should == '0' -1.downto(-10) do |n| get('/decrement').body.should == n.to_s end end end ramaze-2012.12.08/spec/ramaze/session/localmemcache.rb0000644000004100000410000000203712140566653022426 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) spec_require 'localmemcache' spec_require 'sequel' class SpecSession < Ramaze::Controller map '/' engine :None def index 'No session here' end def init session[:counter] = 0 end def view session[:counter] end def increment session[:counter] += 1 end def decrement session[:counter] -= 1 end def reset session.clear end end Ramaze::Cache.options.session = Ramaze::Cache::LocalMemCache describe 'Sessions with Ramaze::Cache::LocalMemCache' do behaves_like :rack_test should 'initiate session as needed' do get '/' last_response.body.should == 'No session here' last_response['Set-Cookie'].should == nil get('/init') last_response.body.should == '0' 1.upto(10) do |n| get('/increment').body.should == n.to_s end get('/reset') get('/view').body.should == '' get('/init').body.should == '0' -1.downto(-10) do |n| get('/decrement').body.should == n.to_s end end end ramaze-2012.12.08/spec/ramaze/session/redis.rb0000644000004100000410000000212412140566653020754 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) spec_require 'redis' spec_precondition 'Redis is running' do cache = Redis.new cache['active'] = true end class SpecSession < Ramaze::Controller map '/' engine :None def index 'No session here' end def init session[:counter] = 0 end def view session[:counter] end def increment session[:counter] += 1 end def decrement session[:counter] -= 1 end def reset session.clear end end Ramaze::Cache.options.session = Ramaze::Cache::Redis describe 'Sessions with Ramaze::Cache::Redis' do behaves_like :rack_test should 'initiate session as needed' do get '/' last_response.body.should == 'No session here' last_response['Set-Cookie'].should == nil get('/init') last_response.body.should == '0' 1.upto(10) do |n| get('/increment').body.should == n.to_s end get('/reset') get('/view').body.should == '' get('/init').body.should == '0' -1.downto(-10) do |n| get('/decrement').body.should == n.to_s end end end ramaze-2012.12.08/spec/ramaze/session/lru.rb0000644000004100000410000000175512140566653020461 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) spec_require 'sequel' class SpecSession < Ramaze::Controller map '/' engine :None def index 'No session here' end def init session[:counter] = 0 end def view session[:counter] end def increment session[:counter] += 1 end def decrement session[:counter] -= 1 end def reset session.clear end end Ramaze::Cache.options.session = Ramaze::Cache::LRU describe 'Sessions with Ramaze::Cache::LRU' do behaves_like :rack_test should 'initiate session as needed' do get '/' last_response.body.should == 'No session here' last_response['Set-Cookie'].should == nil get('/init') last_response.body.should == '0' 1.upto(10) do |n| get('/increment').body.should == n.to_s end get('/reset') get('/view').body.should == '' get('/init').body.should == '0' -1.downto(-10) do |n| get('/decrement').body.should == n.to_s end end end ramaze-2012.12.08/spec/ramaze/session/sequel.rb0000644000004100000410000000207712140566653021153 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) spec_require 'sqlite3' spec_require 'sequel' class SpecSession < Ramaze::Controller map '/' engine :None def index 'No session here' end def init session[:counter] = 0 end def view session[:counter] end def increment session[:counter] += 1 end def decrement session[:counter] -= 1 end def reset session.clear end end Ramaze::Cache.options.session = Ramaze::Cache::Sequel.using( :connection => Sequel.sqlite(':memory:') ) describe 'Sessions with Ramaze::Cache::Sequel' do behaves_like :rack_test should 'initiate session as needed' do get '/' last_response.body.should == 'No session here' last_response['Set-Cookie'].should == nil get('/init') last_response.body.should == '0' 1.upto(10) do |n| get('/increment').body.should == n.to_s end get('/reset') get('/view').body.should == '' get('/init').body.should == '0' -1.downto(-10) do |n| get('/decrement').body.should == n.to_s end end end ramaze-2012.12.08/spec/ramaze/action/0000755000004100000410000000000012140566653017114 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/action/render.rb0000644000004100000410000000102112140566653020712 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) class SpecAction < Ramaze::Controller map '/' provide :html, :None def index 'Hello, World!' end def bar "yo from bar" end end describe 'Action#render' do it 'works when Action is manually created' do action = SpecAction.resolve('/') action.render.should == 'Hello, World!' end end ramaze-2012.12.08/spec/ramaze/action/view/0000755000004100000410000000000012140566653020066 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/action/view/other_wrapper.erb0000644000004100000410000000002712140566653023440 0ustar www-datawww-data

<%= @content %>

ramaze-2012.12.08/spec/ramaze/action/view/sub/0000755000004100000410000000000012140566653020657 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/action/view/sub/sub_wrapper.erb0000644000004100000410000000002412140566653023676 0ustar www-datawww-data

SubWrapper

ramaze-2012.12.08/spec/ramaze/action/view/sub/sub_wrapper.xhtml0000644000004100000410000000002412140566653024262 0ustar www-datawww-data

SubWrapper

ramaze-2012.12.08/spec/ramaze/action/view/other_wrapper.xhtml0000644000004100000410000000002112140566653024016 0ustar www-datawww-data

#@content

ramaze-2012.12.08/spec/ramaze/action/view/single_wrapper.xhtml0000644000004100000410000000002112140566653024156 0ustar www-datawww-data#@content ramaze-2012.12.08/spec/ramaze/action/view/bar.xhtml0000644000004100000410000000001712140566653021706 0ustar www-datawww-dataHello from bar ramaze-2012.12.08/spec/ramaze/action/view/instancevars/0000755000004100000410000000000012140566653022566 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/action/view/instancevars/layout.xhtml0000644000004100000410000000002212140566653025153 0ustar www-datawww-data#@title: #@contentramaze-2012.12.08/spec/ramaze/template/0000755000004100000410000000000012140566653017452 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/template/ramaze/0000755000004100000410000000000012140566653020731 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/template/ramaze/external.test0000644000004100000410000000001412140566653023447 0ustar www-datawww-dataHello World ramaze-2012.12.08/spec/ramaze/rewrite/0000755000004100000410000000000012140566653017320 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/rewrite/file.css0000644000004100000410000000001312140566653020743 0ustar www-datawww-datathis is cssramaze-2012.12.08/spec/ramaze/view/0000755000004100000410000000000012140566653016611 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/erector/0000755000004100000410000000000012140566653020254 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/erector/view.erector0000644000004100000410000000017712140566653022620 0ustar www-datawww-dataclass View < Erector::Widget def content h2 'Hello, view!' rawtext @controller.render_view :external_view end endramaze-2012.12.08/spec/ramaze/view/erector/tables.erector0000644000004100000410000000051612140566653023115 0ustar www-datawww-dataclass Tables < Erector::Widget def content table do thead do tr do th 'Name' th 'Age' end end tbody do @users.each do |user| tr do td user[:name] td user[:age] end end end end end endramaze-2012.12.08/spec/ramaze/view/erector/external_view.erector0000644000004100000410000000011712140566653024514 0ustar www-datawww-dataclass ExternalView < Erector::Widget def content p 'view body.' end endramaze-2012.12.08/spec/ramaze/view/erector/layout.erector0000644000004100000410000000026212140566653023156 0ustar www-datawww-dataclass Layout < Erector::Widget def content html do head do title 'erector' end body do rawtext @content end end end endramaze-2012.12.08/spec/ramaze/view/erector/index.erector0000644000004100000410000000011412140566653022744 0ustar www-datawww-dataclass Index < Erector::Widget def content p 'paragraph text' end endramaze-2012.12.08/spec/ramaze/view/erubis.rb0000644000004100000410000000331612140566653020432 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'erubis' Ramaze::App.options.views = 'erubis' class SpecErubis < Ramaze::Controller map '/' engine :Erubis def index '

Erubis Index

' end def links '
  • <%= a("Index page", :index) %>
  • <%= a("Internal template", :internal) %>
  • <%= a("External template", :external) %>
'.ui end def sum(num1, num2) @num1, @num2 = num1.to_i, num2.to_i end end describe "Ramaze::View::Erubis" do behaves_like :rack_test should 'render' do got = get('/') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "

Erubis Index

" end should 'use other helper methods' do got = get('/links') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == '' end should 'render external template' do got = get('/external') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == " Erubis Test

Erubis Template

" end should 'render external template with instance variables' do got = get('/sum/1/2') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "
3
" end end ramaze-2012.12.08/spec/ramaze/view/gestalt/0000755000004100000410000000000012140566653020254 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/gestalt/external.ges0000644000004100000410000000013712140566653022577 0ustar www-datawww-datahtml do head do title 'Gestalt Test' end body do h1 'Gestalt Template' end end ramaze-2012.12.08/spec/ramaze/view/remarkably.rb0000644000004100000410000000256212140566653021274 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'remarkably' Ramaze::App.options.views = 'remarkably' class SpecRemarkably < Ramaze::Controller map '/' engine :Remarkably helper :remarkably def index h1 "Remarkably Index" end def links ul do li { a "Index page", :href => r(:index) } li { a "Internal template", :href => r(:internal) } li { a "External template", :href => r(:external) } end end def sum(num1, num2) @num1, @num2 = num1.to_i, num2.to_i end end describe Ramaze::View::Remarkably do behaves_like :rack_test should 'use remarkably methods' do get('/').body.should == '

Remarkably Index

' end should 'use other helper methods' do get('/links').body.should == '' end should 'render external template' do get('/external').body.should == "Remarkably Test

Remarkably Template

" end should 'render external template with instance variables' do get('/sum/1/2').body.should == '
3
' end end ramaze-2012.12.08/spec/ramaze/view/ezamar/0000755000004100000410000000000012140566653020070 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/ezamar/external.zmr0000644000004100000410000000016112140566653022442 0ustar www-datawww-data Ezamar Test

Ezamar Template

ramaze-2012.12.08/spec/ramaze/view/ezamar/sum.zmr0000644000004100000410000000003412140566653021423 0ustar www-datawww-data
#{@num1 + @num2}
ramaze-2012.12.08/spec/ramaze/view/slim/0000755000004100000410000000000012140566653017555 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/slim/external.slim0000644000004100000410000000011012140566653022255 0ustar www-datawww-datahtml head title Slim Template body p External Slim template ramaze-2012.12.08/spec/ramaze/view/slim/external_vars.slim0000644000004100000410000000011412140566653023314 0ustar www-datawww-datahtml head title Slim Template body p External #{@name} template ramaze-2012.12.08/spec/ramaze/view/erubis/0000755000004100000410000000000012140566653020102 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/erubis/external.rhtml0000644000004100000410000000016112140566653022772 0ustar www-datawww-data Erubis Test

Erubis Template

ramaze-2012.12.08/spec/ramaze/view/erubis/sum.rhtml0000644000004100000410000000004012140566653021750 0ustar www-datawww-data
<%= @num1 + @num2 %>
ramaze-2012.12.08/spec/ramaze/view/nagoro/0000755000004100000410000000000012140566653020076 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/nagoro/external.nag0000644000004100000410000000016112140566653022405 0ustar www-datawww-data Nagoro Test

Nagoro Template

ramaze-2012.12.08/spec/ramaze/view/nagoro/sum.nag0000644000004100000410000000003412140566653021366 0ustar www-datawww-data
#{@num1 + @num2}
ramaze-2012.12.08/spec/ramaze/view/mustache.rb0000644000004100000410000000352112140566653020750 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'mustache' Ramaze::App.options.views = 'mustache' class SpecMustache < Ramaze::Controller map '/' engine :Mustache def index '

Mustache Index

' end def links @index = a("Index page", r(:index)) @internal = a("Internal template", r(:internal)) @external = a("External template", r(:external)) '
  • {{{index}}}
  • {{{internal}}}
  • {{{external}}}
'.ui end def sum(num1, num2) @sum = num1.to_i + num2.to_i end end describe 'Ramaze::View::Mustache' do behaves_like :rack_test should 'render' do got = get('/') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "

Mustache Index

" end should 'use custom tags for default helpers' do got = get('/links') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == ''.ui end should 'render external template' do got = get('/external') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == " Mustache Test

Mustache Template

" end should 'render external template with instance variables' do got = get('/sum/1/2') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "
3
" end end ramaze-2012.12.08/spec/ramaze/view/haml.rb0000644000004100000410000000440012140566653020055 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'haml' Ramaze::App.options.views = 'haml' class SpecHaml < Ramaze::Controller map '/' engine :Haml def index '%h1 Haml Index' end def links ' %ul %li %a{:href => r(:index)} Index page %li %a{:href => r(:internal)} Internal template %li %a{:href => r(:external)} External template '.ui end def sum(num1, num2) @num1, @num2 = num1.to_i, num2.to_i end end class SpecHamlLayout < Ramaze::Controller map '/with_layout' engine :Haml layout :wrapper RUNS = [1,2,3] def index RUNS.shift.to_s end def wrapper '= @content' end end describe Ramaze::View::Haml do behaves_like :rack_test should 'render' do got = get('/') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "

Haml Index

" end should 'use other helper methods' do got = get('/links') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "" end should 'render external template' do got = get('/external') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == " Haml Test

Haml Template

" end should 'render external template with instance variables' do got = get('/sum/1/2') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "
3
" end should 'render the wrapped view twice even with caching' do got = get('/with_layout') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "1" got = get('/with_layout') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "2" end end ramaze-2012.12.08/spec/ramaze/view/remarkably/0000755000004100000410000000000012140566653020742 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/remarkably/sum.rem0000644000004100000410000000002312140566653022246 0ustar www-datawww-datadiv(@num1 + @num2) ramaze-2012.12.08/spec/ramaze/view/remarkably/external.rem0000644000004100000410000000014512140566653023271 0ustar www-datawww-datahtml do head do title "Remarkably Test" end body do h1 "Remarkably Template" end end ramaze-2012.12.08/spec/ramaze/view/haml/0000755000004100000410000000000012140566653017532 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/haml/external.haml0000644000004100000410000000010112140566653022207 0ustar www-datawww-data%html %head %title Haml Test %body %h1 Haml Template ramaze-2012.12.08/spec/ramaze/view/haml/sum.haml0000644000004100000410000000002712140566653021200 0ustar www-datawww-data%div = @num1 + @num2 ramaze-2012.12.08/spec/ramaze/view/erector.rb0000644000004100000410000000426512140566653020610 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) spec_require 'erector' # Define what view and layout we'll need to load Ramaze::App.options.views = 'erector' Ramaze::App.options.layouts = 'erector' ## # Core spec class for the test. # This class is nothing more than a regular controller but is called using Bacon instead of a browser. # class SpecErector < Ramaze::Controller # Map the controller to the root of the server. map '/' # Set the engine to Erector. We can't test Erector if we're not using it can we? engine :erector helper :erector, :thread layout :layout # The index method loads a very basic view in a layout. def index end # The tables method loads a view that contains a html table. def tables @users = [{:name => 'Yorick Peterse', :age => 18}, {:name => 'Chuck Norris', :age => 9000}, {:name => 'Bob Ross', :age => 53}] end # Render a view inside a view def view end end # Testing time! describe Ramaze::View::Erector do # The test type is a basic Rack based test. behaves_like :rack_test # Render the index view. This is a basic view wrapped in a layout it 'Render a basic layout and view' do got = get '/' got.status.should.equal 200 got['Content-Type'].should.equal 'text/html' got.body.strip.should.equal 'erector

paragraph text

' end # Render the tables view it 'Render a view with an HTML table' do got = get '/tables' got.status.should.equal 200 got['Content-Type'].should.equal 'text/html' got.body.strip.should.equal 'erector
NameAge
Yorick Peterse18
Chuck Norris9000
Bob Ross53
' end # Render a view inside a view it 'Render a view inside a view' do got = get '/view' got.status.should.equal 200 got['Content-Type'].should.equal 'text/html' got.body.strip.should.equal 'erector

Hello, view!

view body.

' end endramaze-2012.12.08/spec/ramaze/view/ezamar.rb0000644000004100000410000000331312140566653020415 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'ezamar' Ramaze::App.options.views = 'ezamar' class SpecEzamar < Ramaze::Controller map '/' engine :Ezamar def index '

Ezamar Index

' end def links '
  • #{a "Index page", r(:index) }
  • #{a "Internal template", r(:internal) }
  • #{a "External template", r(:external) }
'.ui end def sum(num1, num2) @num1, @num2 = num1.to_i, num2.to_i end end describe "Ramaze::View::Ezamar" do behaves_like :rack_test should 'render' do got = get('/') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "

Ezamar Index

" end should 'use other helper methods' do got = get('/links') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == '' end should 'render external template' do got = get('/external') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == " Ezamar Test

Ezamar Template

" end should 'render external template with instance variables' do got = get('/sum/1/2') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "
3
" end end ramaze-2012.12.08/spec/ramaze/view/tagz/0000755000004100000410000000000012140566653017556 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/tagz/external.tagz0000644000004100000410000000013012140566653022261 0ustar www-datawww-datahtml_{ head_{ title_{ "Tagz Test" } } body_{ h1_{ "Tagz Template" } } } ramaze-2012.12.08/spec/ramaze/view/tagz/sum.tagz0000644000004100000410000000002612140566653021247 0ustar www-datawww-datadiv_{ @num1 + @num2 } ramaze-2012.12.08/spec/ramaze/view/tenjin.rb0000644000004100000410000000240712140566653020430 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'tenjin' Ramaze::App.options.views = 'tenjin' class SpecTenjin < Ramaze::Controller map '/' engine :Tenjin def index '

Tenjin Index

' end def links ''.ui end def sum(num1, num2) @num1, @num2 = num1.to_i, num2.to_i end end describe 'Ramaze::View::Tenjin' do behaves_like :rack_test should 'render' do get('/').body.should == '

Tenjin Index

' end should 'use other helper methods' do get('/links').body.strip. should == '' end should 'render external template' do get('/external').body.strip. should == ' Tenjin Test

Tenjin Template

' end end ramaze-2012.12.08/spec/ramaze/view/gestalt.rb0000644000004100000410000000371312140566653020605 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'ramaze/gestalt' Ramaze::App.options.views = 'gestalt' class SpecGestalt < Ramaze::Controller map '/' engine :Gestalt helper :gestalt def index @title = 'Gestalt Index' g end def links g end def with_partial g end def different_module g(:foo, SpecGestalDifferentModule) end end module SpecGestaltView def index h1 @title end def links ul do li{ a "Index page", :href => rs(:index) } li{ a "Internal template", :href => rs(:internal) } li{ a "External template", :href => rs(:external) } end end # def external # ol do # 3.times{ render_view('template') } # end # end def with_partial ul do 3.times{ _partial } end end def _partial li 'List Item' end end module SpecGestalDifferentModule def foo p{ 'view module specified'} end end describe Ramaze::View::Gestalt do behaves_like :rack_test should 'use g helper' do get('/').body.should == '

Gestalt Index

' end should 'use other helper methods' do get('/links').body.should == '' end should 'render external template' do get('/external').body.should == "Gestalt Test

Gestalt Template

" end should 'use method like partials' do get('/with_partial').body.should == '
  • List Item
  • List Item
  • List Item
' end should 'be able to specify different view module and method' do get('/different_module').body.should == '

view module specified

' end end ramaze-2012.12.08/spec/ramaze/view/sass.rb0000644000004100000410000000255312140566653020114 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'haml/util', 'sass' Ramaze::App.options.views = 'sass' class SpecSass < Ramaze::Controller map '/' provide :css, :Sass def style %{ body :margin 1em #content :text-align center } end end class SpecSassOptions < Ramaze::Controller map '/options' provide :css, :Sass trait :sass_options => { :style => :compact } def test %{ body margin: 1em #content font: family: monospace size: 10pt } end end describe Ramaze::View::Sass do behaves_like :rack_test should 'render inline' do got = get('/style.css') got.status.should == 200 got['Content-Type'].should == 'text/css' got.body.strip.should == "body { margin: 1em; } body #content { text-align: center; }" end should 'render from file' do got = get('/file.css') got.status.should == 200 got['Content-Type'].should == 'text/css' got.body.strip.should == "body { margin: 1em; } body #content { text-align: center; }" end should 'use sass options' do got = get('/options/test.css') got.status.should == 200 got['Content-Type'].should == 'text/css' got.body.should.not =~ /^ +/ end end ramaze-2012.12.08/spec/ramaze/view/liquid.rb0000644000004100000410000000335412140566653020432 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'liquid' Ramaze::App.options.views = 'liquid' class SpecLiquid < Ramaze::Controller map '/' engine :Liquid def index '

Liquid Index

' end def links '
  • {% anchor "Index page" index %}
  • {% anchor "Internal template" internal %}
  • {% anchor "External template" external %}
'.ui end def sum(num1, num2) @sum = num1.to_i + num2.to_i end end describe 'Ramaze::View::Liquid' do behaves_like :rack_test should 'render' do got = get('/') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "

Liquid Index

" end should 'use custom tags for default helpers' do got = get('/links') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == ''.ui end should 'render external template' do got = get('/external') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == " Liquid Test

Liquid Template

" end should 'render external template with instance variables' do got = get('/sum/1/2') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "
3
" end end ramaze-2012.12.08/spec/ramaze/view/tenjin/0000755000004100000410000000000012140566653020100 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/tenjin/external.rbhtml0000644000004100000410000000016112140566653023132 0ustar www-datawww-data Tenjin Test

Tenjin Template

ramaze-2012.12.08/spec/ramaze/view/tenjin/sum.rbhtml0000644000004100000410000000003412140566653022113 0ustar www-datawww-data
#{@num1 + @num2}
ramaze-2012.12.08/spec/ramaze/view/mustache/0000755000004100000410000000000012140566653020422 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/mustache/external.mt0000644000004100000410000000016512140566653022610 0ustar www-datawww-data Mustache Test

Mustache Template

ramaze-2012.12.08/spec/ramaze/view/mustache/sum.mt0000644000004100000410000000002312140566653021563 0ustar www-datawww-data
{{sum}}
ramaze-2012.12.08/spec/ramaze/view/nagoro.rb0000644000004100000410000000347312140566653020432 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_precondition 'Nagoro should be supported' do should.flunk if RUBY_DESCRIPTION.include?('rubinius') end spec_require 'nagoro' Ramaze::App.options.views = 'nagoro' class SpecNagoro < Ramaze::Controller map '/' engine :Nagoro def index '

Nagoro Index

' end def links '
  • #{a "Index page", r(:index) }
  • #{a "Internal template", r(:internal) }
  • #{a "External template", r(:external) }
'.ui end def sum(num1, num2) @num1, @num2 = num1.to_i, num2.to_i end end describe "Ramaze::View::Nagoro" do behaves_like :rack_test should 'render' do got = get('/') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "

Nagoro Index

" end should 'use other helper methods' do got = get('/links') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == '' end should 'render external template' do got = get('/external') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == " Nagoro Test

Nagoro Template

" end should 'render external template with instance variables' do got = get('/sum/1/2') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "
3
" end end ramaze-2012.12.08/spec/ramaze/view/slippers.rb0000644000004100000410000000170512140566653021002 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) spec_require 'slippers' Ramaze::App.options.views = 'slippers' class SpecSlippers < Ramaze::Controller map '/' engine :Slippers def index @value = "foo" '

Slippers Index with $value$

' end def sum(num1, num2) @num1, @num2 = num1.to_i, num2.to_i end def external end end describe 'Ramaze::View::Slippers' do behaves_like :rack_test should 'render' do get('/').body.should == '

Slippers Index with foo

' end should 'render external template' do get('/external').body.strip. should == ' Slippers Test

Slippers Template

' end should 'render external template with instance variables' do got = get('/sum/1/2') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "
1 and 2
" end end ramaze-2012.12.08/spec/ramaze/view/slim.rb0000644000004100000410000000226512140566653020107 0ustar www-datawww-datarequire File.expand_path('../../../../spec/helper', __FILE__) spec_require 'slim' Ramaze::App.options.views = 'slim' class SpecSlim < Ramaze::Controller map '/' engine :slim def index @value = 'foo' return 'h1 Slim index with #{@value}' end def external_vars @name = 'Slim' end end # SpecSlim describe 'Ramaze::View::Slim' do behaves_like :rack_test should 'render an inline template' do got = get('/') got.body.should == '

Slim index with foo

' got.status.should == 200 got['Content-Type'].should == 'text/html' end should 'render an external template' do got = get('/external') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.should == 'Slim Template' \ '

External Slim template

' end should 'render an external template with variables' do got = get('/external') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.should == 'Slim Template' \ '

External Slim template

' end end ramaze-2012.12.08/spec/ramaze/view/liquid/0000755000004100000410000000000012140566653020100 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/liquid/sum.liquid0000644000004100000410000000002312140566653022110 0ustar www-datawww-data
{{sum}}
ramaze-2012.12.08/spec/ramaze/view/liquid/external.liquid0000644000004100000410000000016112140566653023131 0ustar www-datawww-data Liquid Test

Liquid Template

ramaze-2012.12.08/spec/ramaze/view/lokar/0000755000004100000410000000000012140566653017721 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/lokar/external.lok0000644000004100000410000000015712140566653022255 0ustar www-datawww-data Lokar Test

Lokar Template

ramaze-2012.12.08/spec/ramaze/view/lokar/sum.lok0000644000004100000410000000003412140566653021231 0ustar www-datawww-data
#{@num1 + @num2}
ramaze-2012.12.08/spec/ramaze/view/slippers/0000755000004100000410000000000012140566653020452 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/slippers/external.st0000644000004100000410000000016512140566653022646 0ustar www-datawww-data Slippers Test

Slippers Template

ramaze-2012.12.08/spec/ramaze/view/slippers/sum.st0000644000004100000410000000003512140566653021624 0ustar www-datawww-data
$num1$ and $num2$
ramaze-2012.12.08/spec/ramaze/view/tagz.rb0000644000004100000410000000254712140566653020113 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_require 'tagz' Ramaze::App.options.views = 'tagz' class SpecTagz < Ramaze::Controller map '/' engine :Tagz helper :tagz def index tagz{ h1_{ "Tagz Index" } } end def links tagz do ul_ do li_{ a_(:href => r(:index)){ "Index page" } } li_{ a_(:href => r(:internal)){ "Internal template" } } li_{ a_(:href => r(:external)){ "External template" } } end end end def sum(num1, num2) @num1, @num2 = num1.to_i, num2.to_i end end describe Ramaze::View::Tagz do behaves_like :rack_test should 'use tagz methods' do get('/').body.should == '

Tagz Index

' end should 'use other helper methods' do get('/links').body.should == '' end should 'render external template' do get('/external').body.should == "Tagz Test

Tagz Template

" end should 'render external template with instance variables' do get('/sum/1/2').body.should == '
3
' end end ramaze-2012.12.08/spec/ramaze/view/sass/0000755000004100000410000000000012140566653017562 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/view/sass/file.css.sass0000644000004100000410000000006712140566653022166 0ustar www-datawww-databody :margin 1em #content :text-align centerramaze-2012.12.08/spec/ramaze/view/lokar.rb0000644000004100000410000000344312140566653020252 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../../spec/helper', __FILE__) spec_precondition 'Lokar should be supported' do should.flunk if RUBY_VERSION.to_f < 1.9 end spec_require 'lokar' Ramaze::App.options.views = 'lokar' class SpecLokar < Ramaze::Controller map '/' engine :Lokar def index '

Lokar Index

' end def links '
  • #{a "Index page", r(:index) }
  • #{a "Internal template", r(:internal) }
  • #{a "External template", r(:external) }
'.ui end def sum(num1, num2) @num1, @num2 = num1.to_i, num2.to_i end end describe "Ramaze::View::Lokar" do behaves_like :rack_test should 'render' do got = get('/') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "

Lokar Index

" end should 'use other helper methods' do got = get('/links') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == '' end should 'render external template' do got = get('/external') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == " Lokar Test

Lokar Template

" end should 'render external template with instance variables' do got = get('/sum/1/2') got.status.should == 200 got['Content-Type'].should == 'text/html' got.body.strip.should == "
3
" end end ramaze-2012.12.08/spec/ramaze/files.rb0000644000004100000410000000147412140566653017274 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require File.expand_path('../../../spec/helper', __FILE__) class SpecFilesCore < Ramaze::Controller map '/', :core end class SpecFilesOther < Ramaze::Controller map '/', :other end Ramaze::App[:core].location = '/' Ramaze::App[:core].options.publics = 'files/public_1' Ramaze::App[:other].location = '/other' Ramaze::App[:other].options.publics = 'files/public_2' describe Ramaze::Files do behaves_like :rack_test it 'serves files for core app from public_1' do get('/plain.txt').body.should == "Just some text in a file\n" end it 'serves files for other app from public_2' do get('/other/rich.txt').body.should == "Some rich text in here\n" end end ramaze-2012.12.08/spec/ramaze/files/0000755000004100000410000000000012140566653016741 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/files/public_1/0000755000004100000410000000000012140566653020437 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/files/public_1/plain.txt0000644000004100000410000000003112140566653022275 0ustar www-datawww-dataJust some text in a file ramaze-2012.12.08/spec/ramaze/files/public_2/0000755000004100000410000000000012140566653020440 5ustar www-datawww-dataramaze-2012.12.08/spec/ramaze/files/public_2/rich.txt0000644000004100000410000000002712140566653022125 0ustar www-datawww-dataSome rich text in here ramaze-2012.12.08/.gems0000644000004100000410000000032412140566653014361 0ustar www-datawww-dataramaze Remarkably bacon dalli erector erubis ezamar haml hpricot liquid locale maruku mustache rack-contrib rack-test rdiscount redis sass sequel slim slippers sqlite3 tagz tenjin yard localmemcache lokar nagoro ramaze-2012.12.08/bin/0000755000004100000410000000000012140566653014176 5ustar www-datawww-dataramaze-2012.12.08/bin/ramaze0000755000004100000410000000034312140566653015403 0ustar www-datawww-data#!/usr/bin/env ruby begin; require 'rubygems'; rescue LoadError; end require File.expand_path('../../lib/ramaze' , __FILE__) require File.expand_path('../../lib/ramaze/bin/runner', __FILE__) Ramaze::Bin::Runner.run ramaze-2012.12.08/metadata.yml0000644000004100000410000006571012140566653015742 0ustar www-datawww-data--- !ruby/object:Gem::Specification name: ramaze version: !ruby/object:Gem::Version version: 2012.12.08 prerelease: platform: ruby authors: - Michael 'manveru' Fellinger - Yorick Peterse autorequire: bindir: bin cert_chain: [] date: 2012-12-08 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: innate requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '2012.12' type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '2012.12' - !ruby/object:Gem::Dependency name: rake requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: Remarkably requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: bacon requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: dalli requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: erector requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: erubis requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: ezamar requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: haml requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: liquid requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: locale requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: maruku requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: mustache requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: rack-contrib requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: rack-test requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: redis requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: sass requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: sequel requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: slim requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: slippers requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: tagz requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: tenjin requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: yard requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: lokar requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: localmemcache requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: nokogiri requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: rdiscount requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: sqlite3 requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: nagoro requirement: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' description: Ramaze is a simple and modular web framework email: - m.fellinger@gmail.com - yorickpeterse@gmail.com executables: - ramaze extensions: [] extra_rdoc_files: [] files: - .gems - .gitignore - .mailmap - .rvmrc - .travis.yml - .yardopts - Gemfile - README.md - Rakefile - bin/ramaze - examples/app/auth/layout/auth.xhtml - examples/app/auth/start.rb - examples/app/auth/view/index.xhtml - examples/app/auth/view/login.xhtml - examples/app/auth/view/secret.xhtml - examples/app/blog/app.rb - examples/app/blog/config.ru - examples/app/blog/controller/init.rb - examples/app/blog/controller/posts.rb - examples/app/blog/controller/users.rb - examples/app/blog/layout/default.xhtml - examples/app/blog/migrations/01_create_schema.rb - examples/app/blog/model/comment.rb - examples/app/blog/model/init.rb - examples/app/blog/model/post.rb - examples/app/blog/model/user.rb - examples/app/blog/public/.htaccess - examples/app/blog/public/css/grid.css - examples/app/blog/public/css/layout.css - examples/app/blog/public/css/reset.css - examples/app/blog/public/css/text.css - examples/app/blog/public/dispatch.fcgi - examples/app/blog/public/favicon.ico - examples/app/blog/public/images/bg.png - examples/app/blog/start.rb - examples/app/blog/view/feed.xhtml - examples/app/blog/view/form.xhtml - examples/app/blog/view/index.xhtml - examples/app/blog/view/users/form.xhtml - examples/app/blog/view/users/index.xhtml - examples/app/blog/view/users/login.xhtml - examples/app/blog/view/view.xhtml - examples/app/chat/layout/default.xhtml - examples/app/chat/model/history.rb - examples/app/chat/model/message.rb - examples/app/chat/public/css/chat.css - examples/app/chat/public/js/chat.js - examples/app/chat/public/js/jquery.js - examples/app/chat/start.rb - examples/app/chat/view/chat.xhtml - examples/app/chat/view/index.xhtml - examples/app/localization/locale/de.yaml - examples/app/localization/locale/en.yaml - examples/app/localization/locale/ja.yaml - examples/app/localization/start.rb - examples/app/todolist/controller/init.rb - examples/app/todolist/controller/task.rb - examples/app/todolist/layout/default.xhtml - examples/app/todolist/model/init.rb - examples/app/todolist/model/task.rb - examples/app/todolist/public/css/screen.css - examples/app/todolist/public/favicon.ico - examples/app/todolist/start.rb - examples/app/todolist/view/index.xhtml - examples/app/upload/start.rb - examples/app/upload/view/index.xhtml - examples/app/whywiki/spec/whywiki.rb - examples/app/whywiki/start.rb - examples/app/whywiki/template/edit.xhtml - examples/app/whywiki/template/show.xhtml - examples/app/wikore/spec/wikore.rb - examples/app/wikore/src/controller.rb - examples/app/wikore/src/model.rb - examples/app/wikore/start.rb - examples/app/wikore/view/index.xhtml - examples/app/wiktacular/README - examples/app/wiktacular/layout/application.xhtml - examples/app/wiktacular/mkd/link/2007-07-20_19-45-51.mkd - examples/app/wiktacular/mkd/link/current.mkd - examples/app/wiktacular/mkd/main/2007-07-20_16-31-33.mkd - examples/app/wiktacular/mkd/main/2007-07-20_19-21-12.mkd - examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd - examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd - examples/app/wiktacular/mkd/main/current.mkd - examples/app/wiktacular/mkd/markdown/current.mkd - examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd - examples/app/wiktacular/mkd/testing/2007-07-20_19-43-50.mkd - examples/app/wiktacular/mkd/testing/2007-07-21_18-46-01.mkd - examples/app/wiktacular/mkd/testing/2007-07-21_18-46-32.mkd - examples/app/wiktacular/mkd/testing/2007-07-21_18-47-08.mkd - examples/app/wiktacular/mkd/testing/2007-07-21_18-47-54.mkd - examples/app/wiktacular/mkd/testing/current.mkd - examples/app/wiktacular/public/favicon.ico - examples/app/wiktacular/public/screen.css - examples/app/wiktacular/spec/wiktacular.rb - examples/app/wiktacular/src/controller.rb - examples/app/wiktacular/src/model.rb - examples/app/wiktacular/start.rb - examples/app/wiktacular/view/edit.xhtml - examples/app/wiktacular/view/index.xhtml - examples/app/wiktacular/view/new.xhtml - examples/basic/element.rb - examples/basic/gestalt.rb - examples/basic/hello.rb - examples/basic/layout.rb - examples/basic/linking.rb - examples/basic/partial.rb - examples/basic/simple.rb - examples/helpers/cache.rb - examples/helpers/identity.rb - examples/helpers/paginate.rb - examples/helpers/rest.rb - examples/helpers/simple_captcha.rb - examples/misc/css.rb - examples/misc/facebook.rb - examples/misc/memleak_detector.rb - examples/misc/nagoro_element.rb - examples/misc/ramaise.rb - examples/misc/rapp.rb - examples/misc/sequel_scaffolding.rb - examples/misc/serve_directory.rb - examples/templates/template_erubis.rb - examples/templates/template_ezamar.rb - examples/templates/template_haml.rb - examples/templates/template_liquid.rb - examples/templates/template_markaby.rb - examples/templates/template_mustache.rb - examples/templates/template_nagoro.rb - examples/templates/template_redcloth.rb - examples/templates/template_remarkably.rb - examples/templates/template_tenjin.rb - examples/templates/view/external.haml - examples/templates/view/external.liquid - examples/templates/view/external.mab - examples/templates/view/external.mt - examples/templates/view/external.nag - examples/templates/view/external.redcloth - examples/templates/view/external.rem - examples/templates/view/external.rhtml - examples/templates/view/external.tenjin - examples/templates/view/external.zmr - guide/AUTHORS - guide/CHANGELOG - guide/LICENSE - guide/_static/logo.png - guide/_static/logo.svg - guide/css/common.css - guide/general/cache.md - guide/general/configuration.md - guide/general/contributing.md - guide/general/controllers.md - guide/general/helpers.md - guide/general/installation.md - guide/general/logging.md - guide/general/middlewares.md - guide/general/models.md - guide/general/principles.md - guide/general/ramaze_command.md - guide/general/routes.md - guide/general/sessions.md - guide/general/special_thanks.md - guide/general/testing.md - guide/general/upgrading.md - guide/general/views.md - lib/proto/Gemfile - lib/proto/README.md - lib/proto/Rakefile - lib/proto/app.rb - lib/proto/config.ru - lib/proto/controller/init.rb - lib/proto/controller/main.rb - lib/proto/layout/default.xhtml - lib/proto/public/css/grid.css - lib/proto/public/css/layout.css - lib/proto/public/css/reset.css - lib/proto/public/css/text.css - lib/proto/public/favicon.ico - lib/proto/public/images/bg.png - lib/proto/spec/helper.rb - lib/proto/task/ramaze.rake - lib/proto/view/index.xhtml - lib/ramaze.rb - lib/ramaze/app.rb - lib/ramaze/bin/create.rb - lib/ramaze/bin/runner.rb - lib/ramaze/cache.rb - lib/ramaze/cache/localmemcache.rb - lib/ramaze/cache/lru.rb - lib/ramaze/cache/memcache.rb - lib/ramaze/cache/redis.rb - lib/ramaze/cache/sequel.rb - lib/ramaze/controller.rb - lib/ramaze/controller/default.rb - lib/ramaze/current.rb - lib/ramaze/default_middleware.rb - lib/ramaze/files.rb - lib/ramaze/gestalt.rb - lib/ramaze/helper.rb - lib/ramaze/helper/auth.rb - lib/ramaze/helper/bench.rb - lib/ramaze/helper/blue_form.rb - lib/ramaze/helper/cache.rb - lib/ramaze/helper/csrf.rb - lib/ramaze/helper/email.rb - lib/ramaze/helper/erector.rb - lib/ramaze/helper/flash.rb - lib/ramaze/helper/formatting.rb - lib/ramaze/helper/gestalt.rb - lib/ramaze/helper/gravatar.rb - lib/ramaze/helper/identity.rb - lib/ramaze/helper/layout.rb - lib/ramaze/helper/link.rb - lib/ramaze/helper/localize.rb - lib/ramaze/helper/markaby.rb - lib/ramaze/helper/maruku.rb - lib/ramaze/helper/paginate.rb - lib/ramaze/helper/remarkably.rb - lib/ramaze/helper/request_accessor.rb - lib/ramaze/helper/send_file.rb - lib/ramaze/helper/simple_captcha.rb - lib/ramaze/helper/stack.rb - lib/ramaze/helper/tagz.rb - lib/ramaze/helper/thread.rb - lib/ramaze/helper/upload.rb - lib/ramaze/helper/user.rb - lib/ramaze/helper/xhtml.rb - lib/ramaze/log.rb - lib/ramaze/log/hub.rb - lib/ramaze/log/informer.rb - lib/ramaze/log/logger.rb - lib/ramaze/log/logging.rb - lib/ramaze/log/rotatinginformer.rb - lib/ramaze/log/syslog.rb - lib/ramaze/reloader.rb - lib/ramaze/reloader/watch_inotify.rb - lib/ramaze/reloader/watch_stat.rb - lib/ramaze/request.rb - lib/ramaze/response.rb - lib/ramaze/snippets.rb - lib/ramaze/snippets/blankslate.rb - lib/ramaze/snippets/object/__dir__.rb - lib/ramaze/snippets/ramaze/deprecated.rb - lib/ramaze/snippets/ramaze/lru_hash.rb - lib/ramaze/snippets/string/camel_case.rb - lib/ramaze/snippets/string/color.rb - lib/ramaze/snippets/string/esc.rb - lib/ramaze/snippets/string/snake_case.rb - lib/ramaze/snippets/string/unindent.rb - lib/ramaze/spec/bacon.rb - lib/ramaze/spec/helper/bacon.rb - lib/ramaze/spec/helper/pretty_output.rb - lib/ramaze/spec/helper/snippets.rb - lib/ramaze/spec/helper/template_examples.rb - lib/ramaze/version.rb - lib/ramaze/view.rb - lib/ramaze/view/erector.rb - lib/ramaze/view/erubis.rb - lib/ramaze/view/ezamar.rb - lib/ramaze/view/gestalt.rb - lib/ramaze/view/haml.rb - lib/ramaze/view/liquid.rb - lib/ramaze/view/lokar.rb - lib/ramaze/view/mustache.rb - lib/ramaze/view/nagoro.rb - lib/ramaze/view/nagoro/render_partial.rb - lib/ramaze/view/remarkably.rb - lib/ramaze/view/sass.rb - lib/ramaze/view/slim.rb - lib/ramaze/view/slippers.rb - lib/ramaze/view/tagz.rb - lib/ramaze/view/tenjin.rb - lib/vendor/route_exceptions.rb - ramaze.gemspec - spec/examples/caching.rb - spec/examples/css.rb - spec/examples/element.rb - spec/examples/hello.rb - spec/examples/linking.rb - spec/examples/misc/sequel_scaffolding.rb - spec/examples/simple.rb - spec/examples/templates/template_erubis.rb - spec/examples/templates/template_ezamar.rb - spec/examples/templates/template_haml.rb - spec/examples/templates/template_liquid.rb - spec/examples/templates/template_markaby.rb - spec/examples/templates/template_mustache.rb - spec/examples/templates/template_nagoro.rb - spec/examples/templates/template_remarkably.rb - spec/examples/templates/template_tenjin.rb - spec/examples/todolist.rb - spec/helper.rb - spec/ramaze/action/render.rb - spec/ramaze/action/view/bar.xhtml - spec/ramaze/action/view/instancevars/layout.xhtml - spec/ramaze/action/view/other_wrapper.erb - spec/ramaze/action/view/other_wrapper.xhtml - spec/ramaze/action/view/single_wrapper.xhtml - spec/ramaze/action/view/sub/sub_wrapper.erb - spec/ramaze/action/view/sub/sub_wrapper.xhtml - spec/ramaze/app.rb - spec/ramaze/app/location.rb - spec/ramaze/bin/app/config.ru - spec/ramaze/bin/create.rb - spec/ramaze/bin/runner.rb - spec/ramaze/cache/localmemcache.rb - spec/ramaze/cache/lru.rb - spec/ramaze/cache/memcache.rb - spec/ramaze/cache/redis.rb - spec/ramaze/cache/sequel.rb - spec/ramaze/controller/actionless_templates.rb - spec/ramaze/controller/lonely_mapping.rb - spec/ramaze/controller/mapping.rb - spec/ramaze/controller/provide_inheritance.rb - spec/ramaze/controller/resolve.rb - spec/ramaze/controller/subclass.rb - spec/ramaze/controller/template_resolving.rb - spec/ramaze/controller/view/bar.xhtml - spec/ramaze/controller/view/base/another.xhtml - spec/ramaze/controller/view/greet.xhtml - spec/ramaze/controller/view/list.xhtml - spec/ramaze/controller/view/other/greet/other.xhtml - spec/ramaze/controller/view/other_wrapper.xhtml - spec/ramaze/dispatcher/directory.rb - spec/ramaze/dispatcher/file.rb - spec/ramaze/dispatcher/public/favicon.ico - spec/ramaze/dispatcher/public/file name.txt - spec/ramaze/dispatcher/public/test_download.css - spec/ramaze/error.rb - spec/ramaze/files.rb - spec/ramaze/files/public_1/plain.txt - spec/ramaze/files/public_2/rich.txt - spec/ramaze/gestalt.rb - spec/ramaze/helper/auth.rb - spec/ramaze/helper/bench.rb - spec/ramaze/helper/blue_form.rb - spec/ramaze/helper/cache.rb - spec/ramaze/helper/csrf.rb - spec/ramaze/helper/email.rb - spec/ramaze/helper/flash.rb - spec/ramaze/helper/formatting.rb - spec/ramaze/helper/gestalt.rb - spec/ramaze/helper/gravatar.rb - spec/ramaze/helper/layout.rb - spec/ramaze/helper/layout/alternative.xhtml - spec/ramaze/helper/layout/default.xhtml - spec/ramaze/helper/link.rb - spec/ramaze/helper/localize.rb - spec/ramaze/helper/maruku.rb - spec/ramaze/helper/paginate.rb - spec/ramaze/helper/request_accessor.rb - spec/ramaze/helper/simple_captcha.rb - spec/ramaze/helper/stack.rb - spec/ramaze/helper/upload.rb - spec/ramaze/helper/uploads/text_1.txt - spec/ramaze/helper/uploads/text_2.txt - spec/ramaze/helper/user.rb - spec/ramaze/helper/view/locals.xhtml - spec/ramaze/helper/view/loop.xhtml - spec/ramaze/helper/view/num.xhtml - spec/ramaze/helper/view/partial.xhtml - spec/ramaze/helper/view/recursive.xhtml - spec/ramaze/helper/view/recursive_local_ivars.xhtml - spec/ramaze/helper/view/recursive_locals.xhtml - spec/ramaze/helper/view/test_template.xhtml - spec/ramaze/helper/xhtml.rb - spec/ramaze/log/informer.rb - spec/ramaze/log/logging.rb - spec/ramaze/log/syslog.rb - spec/ramaze/params.rb - spec/ramaze/public/favicon.ico - spec/ramaze/public/ramaze.png - spec/ramaze/public/test_download.css - spec/ramaze/request.rb - spec/ramaze/rewrite/file.css - spec/ramaze/session/localmemcache.rb - spec/ramaze/session/lru.rb - spec/ramaze/session/memcache.rb - spec/ramaze/session/redis.rb - spec/ramaze/session/sequel.rb - spec/ramaze/template/ramaze/external.test - spec/ramaze/view.rb - spec/ramaze/view/erector.rb - spec/ramaze/view/erector/external_view.erector - spec/ramaze/view/erector/index.erector - spec/ramaze/view/erector/layout.erector - spec/ramaze/view/erector/tables.erector - spec/ramaze/view/erector/view.erector - spec/ramaze/view/erubis.rb - spec/ramaze/view/erubis/external.rhtml - spec/ramaze/view/erubis/sum.rhtml - spec/ramaze/view/ezamar.rb - spec/ramaze/view/ezamar/external.zmr - spec/ramaze/view/ezamar/sum.zmr - spec/ramaze/view/gestalt.rb - spec/ramaze/view/gestalt/external.ges - spec/ramaze/view/haml.rb - spec/ramaze/view/haml/external.haml - spec/ramaze/view/haml/sum.haml - spec/ramaze/view/liquid.rb - spec/ramaze/view/liquid/external.liquid - spec/ramaze/view/liquid/sum.liquid - spec/ramaze/view/lokar.rb - spec/ramaze/view/lokar/external.lok - spec/ramaze/view/lokar/sum.lok - spec/ramaze/view/mustache.rb - spec/ramaze/view/mustache/external.mt - spec/ramaze/view/mustache/sum.mt - spec/ramaze/view/nagoro.rb - spec/ramaze/view/nagoro/external.nag - spec/ramaze/view/nagoro/sum.nag - spec/ramaze/view/remarkably.rb - spec/ramaze/view/remarkably/external.rem - spec/ramaze/view/remarkably/sum.rem - spec/ramaze/view/sass.rb - spec/ramaze/view/sass/file.css.sass - spec/ramaze/view/slim.rb - spec/ramaze/view/slim/external.slim - spec/ramaze/view/slim/external_vars.slim - spec/ramaze/view/slippers.rb - spec/ramaze/view/slippers/external.st - spec/ramaze/view/slippers/sum.st - spec/ramaze/view/tagz.rb - spec/ramaze/view/tagz/external.tagz - spec/ramaze/view/tagz/sum.tagz - spec/ramaze/view/tenjin.rb - spec/ramaze/view/tenjin/external.rbhtml - spec/ramaze/view/tenjin/sum.rbhtml - spec/snippets/object/__dir__.rb - spec/snippets/ramaze/lru_hash.rb - spec/snippets/string/camel_case.rb - spec/snippets/string/color.rb - spec/snippets/string/snake_case.rb - spec/snippets/string/unindent.rb - tasks/authors.rake - tasks/bacon.rake - tasks/changelog.rake - tasks/gems.rake - tasks/release.rake - tasks/todo.rake - tasks/yard.rake homepage: http://ramaze.net/ licenses: [] post_install_message: rdoc_options: [] require_paths: - lib required_ruby_version: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: '0' required_rubygems_version: !ruby/object:Gem::Requirement none: false requirements: - - ! '>=' - !ruby/object:Gem::Version version: 1.3.5 requirements: [] rubyforge_project: rubygems_version: 1.8.24 signing_key: specification_version: 3 summary: Ramaze is a simple and modular web framework test_files: [] ramaze-2012.12.08/.yardopts0000644000004100000410000000037612140566653015302 0ustar www-datawww-data./lib/ramaze/**/*.rb ./lib/ramaze.rb -m markdown -M rdiscount -o ./doc -r ./README.md --private --protected --asset ./guide/_static:_static --asset ./guide/css/common.css:css/common.css - ./guide/**/*.md ./guide/AUTHORS ./guide/CHANGELOG ./guide/LICENSE ramaze-2012.12.08/Gemfile0000644000004100000410000000003212140566653014714 0ustar www-datawww-datasource :rubygems gemspec ramaze-2012.12.08/guide/0000755000004100000410000000000012140566653014523 5ustar www-datawww-dataramaze-2012.12.08/guide/LICENSE0000644000004100000410000000205512140566653015532 0ustar www-datawww-dataCopyright (c) 2006 - 2012, Michael Fellinger Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ramaze-2012.12.08/guide/css/0000755000004100000410000000000012140566653015313 5ustar www-datawww-dataramaze-2012.12.08/guide/css/common.css0000644000004100000410000000037012140566653017315 0ustar www-datawww-databody { font-size: 14px; line-height: 1.6; margin: 0 auto; max-width: 960px; } code { background: #f2f2f2; padding-left: 3px; padding-right: 3px; } pre.code { font-size: 13px; line-height: 1.4; } ramaze-2012.12.08/guide/general/0000755000004100000410000000000012140566653016140 5ustar www-datawww-dataramaze-2012.12.08/guide/general/principles.md0000644000004100000410000000370112140566653020633 0ustar www-datawww-data# @title Principles # Principles There are some basic principles that Ramaze tries to follow: * KISS (Keep It Super Simple) Ramaze doesn't introduce any major change of paradigm for everyone familiar with Ruby and the basics of Web-development. * POLS (Principle Of Least Surprise) Ramaze tries to be intuitive and easy to learn. Most functionality is built in a way to help, not to obfuscate or confuse. * Modular design Use what you want and how you want it.Through Ruby Ramaze provides one of the most powerful programming-languages available, giving you full control over your system. Even the most essential parts of Ramaze can easily be replaced and/or modified without losing the advantage of the whole framework. * Minimal dependencies Nothing besides Ruby is required for the basic features. Of course you can take advantage of several wonderful libraries, but Ramaze is built in a way to be run on any basic setup. * Documentation Document everything, classes, modules, methods, configuration and so on. Through 100% documentation Ramaze gives the developer easy and solid understanding of the underlying concepts and functionality. * Open development Everyone is welcome to contribute to Ramaze in the easiest way possible. The repository is open for patches passing the Test-suite. * Examples Everyone learns different, some only read the source, others browse documentation, but everyone loves examples for a quick and painless start. Ramaze addresses this need and offers a wide variety of examples of usage, basic functionality, project-layout and more advanced applications. * Fully BDD (Behaviour Driven Design) Ramaze has a very complete set of so-called specifications built by RSpec. These specs define the way Ramaze has to behave. The specs are checked every time a new patch is pushed into the repository, deciding whether the changes the patch applies are valid and don't break the framework. ramaze-2012.12.08/guide/general/sessions.md0000644000004100000410000001461512140566653020337 0ustar www-datawww-data# @title Sessions # Sessions The term sessions is used for data associated to a specific client. The easiest example of a session is a simple cookie containing some very basic data such as a user's name. ## Initializing Sessions Ramaze lazy-loads the session system that it's ship with. This means that if you never use any session related data a session will not be created. As soon as you call the main object for working with sessions (simply called "session") or add data to the flash (more on that later) Ramaze will load the session adapter automatically. This prevents you from having to manually write code that invokes a session for all your projects. So how do we actually start a session? As mentioned earlier this can be done in two different ways, calling session or flash. If you want to store data in the session until the client's session is destroyed (or the data is removed) it's best to use session, if you only want to store something until the client is redirected to another page (or just visits a page himself) you should use flash. ## Changing Drivers Out of the box Ramaze uses the driver {Ramaze::Cache::LRU}. This driver stores all session related data in the memory of the current process. While this is fine during development it's something you most likely don't want to use in a multi process based environment as data stored in a process' memory isn't shared. To work around this you can use an alternative driver, such a driver can be set as following: Ramaze::Cache.options.session = Ramaze::Cache::MemCache This particular example tells Ramaze to use Memcached for storing session related data. Where you set this doesn't really matter as long as it's done before calling ``Ramaze.start``. Generally you'd want to put this in a configuration file that's loaded in your app.rb file, if your application is a small one you can just put it in the app.rb file directly. ## Available Drivers * {Ramaze::Cache::Sequel} * {Ramaze::Cache::LRU} * {Ramaze::Cache::MemCache} * {Ramaze::Cache::Redis} * {Ramaze::Cache::LocalMemCache} * {Innate::Cache::FileBased} * {Innate::Cache::DRb} * {Innate::Cache::Marshal} * {Innate::Cache::Memory} * {Innate::Cache::YAML} ## The Session Object As mentioned earlier session is used for data that should be stored until the client's session is destroyed or the data is removed. A good example of this sort of data is a boolean that indicates if the user is logged in or not, you don't want the user to re-authenticate over and over again thus you store the data using the session object. Storing data using this method is incredible simple and works a bit like you're storing data in a hash: session[:logged_in] = true In the above example we stored a boolean with a value of "true" in the current client's session under the name `:logged_in`. If we want to retrieve this data somewhere else in the application all we'd have to do is the following: session[:logged_in] # => true A better example would be a simple counter that tracks the amount of times a user has visited your application: class Counter < Ramaze::Controller map '/' def index # If no data was found for the given key session returns nil if !session[:visits].nil? session[:visits] = 0 else session[:visits] += 1 end "You have visitied this page #{session[:visits]} times." end end In this relatively basic controller a user's amount of visits to the index() method will be stored in the session and displayed afterwards. Now it's time for the true magic. The session object is an instance of Innate::Session and has a few extra methods besides [] and []=. These methods are delete(), clear(), flush(), resid!() and sid(). We're not going to cover all methods but we will look at the delete() and resid() methods. ### session.delete The method Session.delete can be used to remove a chunk of data from the client's session. In order to delete our amount of visits all we'd have to do is the following: session.delete(:visits) From this point on the "visits" key is set to nil until the user visits the index page again. ### session.resid! Session.resid! can be used to regenerate the client's session ID without destroying the session data. This method is extremely useful for authentication systems as it can be used to prevent session fixation attacks by generating a new session ID every N minutes or whenever a certain action is triggered (e.g. the user logs in). Using this method is very simple and only requires the following to be done: session.resid! ## Flashdata Flashdata is a form of session data that is removed as soon as the client requests a new resource. This means that if something is stored in the flash and the user is redirected the data will be automatically removed. One of the things the flash data can be used for is storing notifications that are displayed if a blog post has been saved successfully. Storing data in the flash works similar to storing data in the session and can be done by calling the flash object: flash[:message] = "Hello, Ramaze!" If we want to remove something from the flash we can call Flash.delete similar to Session.delete: flash.delete(:message) Note that due to the nature of the flash data you'd have to do this before the client requests a new resource as the data will be deleted automatically at that point. To make it easier to display flash based messages you can use {Ramaze::Helper::Flash#flashbox}. You can load this helper by calling ``helper(:flash)`` inside your controller. To change the markup of the flashbox' HTML you can use the following trait inside your controller: trait :flashbox => "

%value

" Below is an example of how the flash data can be used in a typical Ramaze application: class Blogs < Ramaze::Controller map '/' helper :flash def index flash[:message] end def set_message flash[:message] = "Hello, Ramaze!" redirect(Blogs.r(:index)) end end If a client were to visit the index method for the first time nothing would be displayed because the flash data isn't there yet. As soon as the client visits `/set_message` he would be redirected back to the index method and the message "Hello, Ramaze!" would be displayed. Refreshing the page would clear the flash data and the message would no longer be displayed until the client visits /set\_message again. ramaze-2012.12.08/guide/general/contributing.md0000644000004100000410000001677712140566653021213 0ustar www-datawww-data# @title Contributing to Ramaze # Contributing To Ramaze Everybody is welcome to contribute to Ramaze and/or the guide. This guide is meant to be a starting point for those interested in contributing code, writing documentation or advertising Ramaze. A small guide containing details about the general workflow of Github projects can be found [here][workflow]. If you're new to Github/Git it's recommended to read this guide (as well as the various Github help pages). ## Coding Standards * 2 spaces per indentation level for Ruby code. * Document your code as much as you can. * Write Bacon specifications for each change you make, especially when adding new features. * Use Markdown for markup, both when documenting source code as well as when writing pages for the guide. * Code should be hard wrapped at 80 characters. * Variables and methods are ``lower_cased`` while constants such as those used to store version numbers use ``SCREAMING_SNAKE_CASE``. An example of this is ``Ramaze::VERSION``. Class names and the like are ``PascalCased``. ## Git Usage and Standards Ramaze uses [Git][git] as it's version control system. In order to contribute to Ramaze using Git there are a few things to keep in mind and a few standards to follow. ### Commit Messages Commit messages should be splitted up in two parts, a short description of the commit in 50 characters or less. This short description should be followed by an empty line which in turn is followed by a long description. The short description can be seen as an Email subject while the long description would be the actual Email body. An example of such a commit message is the following: Moved some chapters around. The chapters on helpers and logging data have been moved to their own file instead of being displayed in the README. Next up is writing the actual documentation on logging data. Signed-off-by: Yorick Peterse Each commit should only contain a related set of changes. If you're adding a feature but found a bug and fixed it it's easier to keep track of changes if the bug and the feature are divided into two separate commits (if possible). This makes it easier to revert certain changes when needed or pick specific commits from a branch (using ``git cherry-pick``). ### Branching When working on code your changes should be made in a separate branch. The name of this branch should be related to the changes you're making and should be short. For example, if you're working on a chapter for the guide you could name it "documentation". Or maybe you're working on a helper, in that case you could name it "example-helper". In the end it doesn't really matter, just keep the length down a bit. Putting your changes in a separate branch makes it easier to manage them and pull them into the main (master) branch. ### Pull Requests Once you've finished working on your changes you should notify us about the changes. The easiest way to do this is to send a pull request on Github. Information about sending and handling pull requests can be found on the [Pull request][pull requests] page on Github. ## Writing Documentation The documentation (both the guides and the API documentation) uses [Markdown][markdown] as its markup engine. All the text should be written in English. Try writing as clear as possible and remove as much spelling/grammar errors as you can find before submitting it to Ramaze. When writing guides (or modifying existing ones) make sure that each line is no longer than 80 characters and that there is no trailing whitespace in the file. If you're using Vim you can configure it to automatically insert characters/words on new lines using the following settings: set nowrap set tw=80 Other editors will have different settings so refer to the documentation of your editor for more information. Linking to classes and methods can be done by wrapping the namespace/method in ``{}``: {Ramaze::VERSION} If you want to link to an internal file you should use the following syntax instead: {file:path/to/file Title}

Keep in mind that the above syntax for linking to files does not work for files located outside of the guide/ directory.

Markdown files should be lower cased, spaces should be replaced with underscores. Examples of this are ``ramaze_command.md`` and ``special_thanks.md``. Just like the Ruby code the text for the guide should be wrapped at 80 characters. ### Testing Documentation After you've made some changes you'll have to test it. Building the documentation can be done in two different ways, either by building the Ramaze only documentation or the documentation of both Ramaze and Innate. Lets assume that you don't have a local copy of Ramaze' Git repository yet, you can add such a copy by running the following Git command: $ git clone git://github.com/Ramaze/ramaze.git Once the cloning process has been completed you'll have to ``cd`` into the "ramaze" directory. If you happen to have RVM installed doing this will most likely trigger a warning about an untrusted .rvmrc file being detected. If you decide to trust this file RVM will load it and automatically install all the required gems (these can be found in the .gems file in the root directory of the repository). If you don't have RVM installed you'll have to install the dependencies of Ramaze yourself, but fear not for it is very easy and only requires you to run the following command: $ rake setup Similar to using RVM this command installs all required gems with a small difference: it only installs what is supported by your platform. For example, on OS X the "localmemcache" gem is not installed since it doesn't support this operating system. Once installed you can build the documentaton using the command ``rake yard``. This command optionally takes a parameter that can be used to specify the path to the **lib** directory of Innate. When specifying this path Innate's documentation will be included as well (this is what we use for ). Of course for this to work you'll need to have a local copy of Innate as well. Assuming you're still in the "ramaze" directory you can get a local copy of Innate by running the following commands: $ cd .. $ git clone git://github.com/Ramaze/innate.git $ cd ramaze Now run the ``rake yard`` task as following: $ rake yard[../innate/lib] Once the documentation has been built (either by including or excluding Innate) you can simply point your browser to the "doc" directory to view it. ## Spreading The Word Maybe you're not familiar with Git or perhaps you just don't have the time to contribute code. In both cases there are things you can do to help Ramaze grow. The easiest way is to just tell people about it. Talk to co-workers, give presentations or just suggest it whenever you think it could be useful for people. If you like to use the Ramaze logo for a presentation or something else you can freely use the official Ramaze logo displayed below. The logo is licensed under a [Creative Commons][cc license] license. The logo comes in two formats, a SVG file and a PNG of which both are displayed below. ![Logo SVG][logo svg] ![Logo PNG][logo png] [git]: http://git-scm.com/ [pull requests]: http://help.github.com/send-pull-requests/ [markdown]: http://daringfireball.net/projects/markdown/ [cc license]: http://creativecommons.org/licenses/by-sa/3.0/ [logo svg]: _static/logo.svg "The logo in SVG format" [logo png]: _static/logo.png "The logo in PNG format" [workflow]: https://github.com/thessaloniki/rb/wiki/Workflow ramaze-2012.12.08/guide/general/middlewares.md0000644000004100000410000000767312140566653020777 0ustar www-datawww-data# @title Rack Middlewares # Rack Middlewares Ramaze is a Rack based framework and thus allows you to create so called Rack middlewares. Middlewares are basically objects that are stacked together in order to intercept and process sequentially each incoming request and outgoing response between Rack and Ramaze. You can think of a collection of middlewares as a stack at whose bottom lies your Ramaze app. The flow of a Rack request (including middlewares) looks as following: Request --> Server (Thin, Unicorn, etc) --> Rack --> Middleware(s) --> Ramaze --> Controller Say we want to ban a number of users by IP, there are two ways of doing this. The first way of doing this would be to validate the user's IP in all controllers (or in a base controller). However, this approach will eventually require quite a bit of code. The easier method, as you may have guessed, is using a Rack middleware. Since middlewares are executed for each request this means we'll only have to add our code once and we're good to go. ## Building the Middleware Let's begin building our IP blacklist. For the sake of simplicity we'll hardcode the blocked IPs in an array stored inside our middleware. Go ahead and create a file called "banlist.rb" and save it somewhere in your application (and require it!). We'll begin with our basic skeleton that looks like the following: class Banlist def initialize(app) @app = app end def call(env) end end First we declare a new class called "Banlist". Followed by this is our construct method that takes a single argument: an object containing the details of our Ramaze application. Next up is the call() method which also takes a single argument but this time it's an object containing our environment details such as the POST and GET data. Let's add a list of blocked IPs to our middleware. Modify the initialize() method so that it looks like the following: def initialize(app) @app = app @banned = ['189.3.0.116', '193.159.244.70', '193.46.236.*'] end We now have 3 blocked IPs. Time to actually implement the blocking mechanism in our call() method. Modify it as following: def call(env) if @banned.include?(env['REMOTE_ADDR']) return "You have been banned!" else @app.call(env) end end So what did we do? Quite simple actually, we extracted the user's IP by calling ``env['REMOTE_ADDR']`` and checked if it's stored in the @banned instance variable. If it is we'll block the user and show a message "You have been banned". Our final middleware looks like the following: class Banlist def initialize(app) @app = app @banned = ['189.3.0.116', '193.159.244.70', '193.46.236.10'] end def call(env) if @banned.include?(env['REMOTE_ADDR']) return "You have been banned!" else @app.call(env) end end end ## Using Middlewares Now it's time to tell Ramaze to actually use the middleware. This can be done by calling Ramaze#middleware. This method accepts a block in which one defines which middlewares to use for a specific mode and the name for this Ramaze mode (Ramaze comes with "live" and "dev"). In the block you can call two Innate#MiddlewareCompiler methods ```use()``` and ```run()```. The ```use()``` method is used in order to add and configure a middleware, while ```run()``` is used to determine what class is used to run our Ramaze application. Unless you're using a custom class this should always be set to `Ramaze.core`. Assuming we're running in "dev" mode our call will look like the following: Ramaze.middleware :dev do use Banlist run Ramaze.core end

The method Ramaze.middleware can no longer be used to retrieve the used middleware, instead it can only be used to set these. The method Ramaze.middleware! also no longer exists.

ramaze-2012.12.08/guide/general/installation.md0000644000004100000410000000411112140566653021160 0ustar www-datawww-data# @title Installation # Installation Ramaze can be installed by using [Rubygems][rubygems], direct download or by using Git. Installing Ramaze via Rubygems only needs a single command: $ gem install ramaze Optionally you can specify ``-v`` to install a specific version: $ gem install ramaze -v 2011.07.25 ## Git If you're interested in hacking on Ramaze or you just want to browse the source you can use Git to install a local copy of Ramaze. For this you'll need to have Git installed (refer to your package manager for details on installing Git). When installed you can clone the Ramaze repository with the following commnad: $ git clone git://github.com/ramaze/ramaze.git Once the cloning process has completed you should ``cd`` into the directory to install all required gems and optionally set up an RVM environment in case you're using RVM: $ cd ramaze $ bundle install Once installed you can build a gem manually or just require the local installation manually: require '/path/to/ramaze/lib/ramaze' Building a gem can be done using the command ``rake gem:build``, if you want to also install the gem after it's built you should run ``rake gem:install`` instead. Another way of loading Ramaze is to add it to your ``$RUBYLIB`` variable. It's best if you put this in your ``.bashrc`` file so that you don't have to run the command manually every time you open up a new terminal: export RUBYLIB="/path/to/ramaze/lib" This approach allows you to load Ramaze like you'd normally would instead of having to specify the full path. ## Direct Download In case you don't have Git installed but still want to have a local copy you can download a tarball from Github. If you want to download the latest copy you can go to the [Downloads][downloads] page, if you want to download a specific tag instead you should navigate to the [Tags][tags] page. Once downloaded and extracted the setup process is the same as when installing Ramaze via Git. [rubygems]: http://rubygems.org/ [downloads]: https://github.com/Ramaze/ramaze/downloads [tags]: https://github.com/Ramaze/ramaze/tags ramaze-2012.12.08/guide/general/views.md0000644000004100000410000002754212140566653017631 0ustar www-datawww-data# @title Views # Views Views are the last step in the process of a request to a MVC framework such as Ramaze. A controller loads a model, the model processes a certain amount of data and the controller will then pass this data to a view. The typical flow of a MVC framework (or any framework using a view system) looks like the following: Request --> Controller --> View ^ | | '--> Model | | '--<-----' The contents of a view is what the visitor of a page will eventually see. Looking back at the waiter example introduced in the :doc:`controllers` chapter a view can be seen as our dinner. It's the end result we requested for but it has been modified according to our order. Ramaze has support for many different template engines and thus views can look quite different. By default Ramaze uses a simple template engine called "Etanni", Etanni was developed by Michael Fellinger exclusively for Ramaze and is a very fast template engine. In this chapter we'll use Etanni to make it a bit easier to understand how views work. ## Layouts Ramaze also has a concept of layouts. Layouts are basically views for views and are placed in the "layout" directory of your application. These views can be used to display generic elements such as a navigation menu for all views. Because of this it's recommended to only place action specific markup in your views. Global elements such as navigation menus or page titles should go in a layout. In order to render a view inside a layout all you have to do is calling the "content" instance variable. If we were to use Etanni (more on this later) our code would look like the following:
#{@content}
In order to use a layout we have to tell Ramaze to do so in our controller. Setting a layout can be done in a few different ways. The easiest way is using the method "layout" in your controller as following: class Blogs < Ramaze::Controller layout 'default' end This will tell Ramaze to use the layout "default.xhtml" for the Blogs controller. While suited for most people there comes a time when you're in the need of a more dynamic way of assigning a layout. This can be done in two different ways. The first way is passing a block to the layout() method: class Blogs < Ramaze::Controller layout do |path| if path === 'index' :index_layout else :alternative_layout end end end In this example two layouts are used, `index_layout` for the index() method and `alternative_layout` for all other methods. The second way is using the method `set_layout`. This method works almost identical to layout() but has one big advantage: it can set method specific layouts. Changing the code posted above so that it uses this method would look like the following: class Blogs < Ramaze::Controller # Set our default layout layout 'alternative_layout' # Set our layout for the index() method set_layout 'index_layout' => [:index] end The `set_layout` method takes a hash where the keys are the names of the layouts to use and the values the methods for which to use each layout. Below is another example that specifies a few extra layout/method combinations. class Blogs < Ramaze::Controller # Set our default layout layout 'default' # Set our layout for the index() method set_layout 'main' => [:index, :edit], 'extra' => [:add, :synchronize] end

Note: layouts should be set outside controller actions. Doing so can lead to unexpected behaviour as the layout won't be visible until the next request.

## Loading Views Loading views can be done in two different ways. When not explicitly calling a certain view (or returning any data from the controller) Ramaze will try to load a matching view for the current action. If the method "edit" was called Ramaze will try to load a view called "edit". Manually sending a response back can be done by returning a string from the controller method that is called. Take a look at the example below. class Blogs < Ramaze::Controller map '/' def index end def custom "This is my custom response!" end def other render_view :foobar end end If the user were to visit /index Ramaze would try to load the view "index.xhtml" (``.xhtml`` is the extension for Etanni templates) but when the user goes to /custom he'll always see the message "This is my custom response!". This is because Ramaze will use the return value of a controller method as the body for the response that will be sent back to the visitor. Let's take a look at the other() method in our controller. As you can see it calls a method `render_view`. This method is used to render a different view (in this case foobar.xhtml) but without calling it's action, once this is done the contents of the view will be returned to the controller. When calling custom views you can use any of the following methods: * render\_view * render\_partial * render\_file * render\_custom * render\_full ### render\_view As mentioned earlier this method is used to render a view without calling it's action. This can be useful if you have several methods that share the same view but feed it different data. The usage of this method is quite simple, it's first argument is the name of the view to load (without the extension, Ramaze will figure this out) and the second argument is a hash containing any additional variables to send to the view (more on this later). # Render "foo.xhtml" render_view :foo # Render "foo.xhtml" and send some extra data to it render_view :foo, :name => "Ramaze" ### render\_partial The `render_partial` method works similar to the `render_view` method but with two differences: 1. This method *does* execute a matching action. 2. This method *does not* render a layout. This makes the `render_partial` method useful for responses to Ajax calls that don't need (or don't want to) load both the view and the layout. This method has the same arguments as the `render_view` method. # Render the view "partial.xhtml" render_partial :partial # Render the partial "partial.xhtml" and send some extra data to it render_partial :partial, :name => "Ramaze" ### render\_file There comes a time when you may want to render a file that's located somewhere else. For this there is the `render_file()`` method. This method takes a path, either relative or absolute to a file that should be rendered. This can be useful if you have a cache directory located outside of your project directory and you want to load a view from it. The first argument of this method is a path to a file to render, the second argument is a hash with variables just like the other render methods. Optionally this method accepts a block that can be used to modify the current action. # Render a file located in /tmp render_file '/tmp/view.xhtml' # Render a file and send some extra data to it render_file '/tmp/view.xhtml', :name => "Ramaze" # Render a file and modify the action render_file '/tmp/view.xhtml' do |action| # Remove our layout action.layout = nil end ### render\_custom The render_custom() method can be used to create your personal render method and is actually used by methods such as the render_partial method. The syntax is the same as the render_file() method except that instead of a full path it's first argument should be the name of the action to render. render_custom :index do |action| # Remove the layout action.layout = nil # Render the view without calling a method action.method = nil end ### render\_full Last but not least there's the render_full() method. This is the method Ramaze uses for calling a controller along with it's views and such. This method takes two arguments, the first is the full path of the action to render and the second a hash that will be used for the query string parameters. Please note that if this method is called in the first request of a client you won't have access to the session data and such, any following calls will have access to this data. # Calls Blogs#index render_full '/blog/index' # Calls Blogs#edit(10) render_full '/blog/edit/10' ### Assigning Data Assigning data to a view is very simple. Ramaze will copy all instance variables from the current controller into the view. This means that if you have a variable @user set to "Yorick Peterse" this variable can be displayed in your view as following (assuming you're using Etanni):

Username: #{@user}

Besides this you can assign custom data to a view by calling any of the render methods and passing a hash to them. Please note that the behavior or the syntax of displaying variables may change depending on the template engine you're using. While Etanni allows you to execute plain Ruby code in your view a template engine such as Mustache won't and thus may have a different syntax. If we wanted to use Mustache and display our @user variable it would have to be done as following:

Username: {{user}}

## View Mapping Views are saved in the directory "view" and are saved according to the controller mapping. If you have a controller that's mapped to /modules/blog the index view will be located at view/modules/blog/index.xhtml. Below are a few examples that show where the views are located when passing different values to the map() method. map '/' # view/index.html, view/edit.xhtml, etc map '/blog' # view/blog/index.xhtml, view/blog/edit.xhtml, etc map '/modules/blog' # view/modules/blog/index.xhtml, view/modules/blog/edit.xhtml, etc ## Template Engines Ramaze ships with support for the following template engines: * Erector * Etanni * Erubis * Ezamar * HAML * Less * Gestalt * Liquid * Lokar * Mustache * Nagoro * Remarkably * Sass * Slippers * Tagz * Tenjin All of these engines can be used on a per controller basis by calling the engine() method and passing a symbol or string to it. class Blogs < Ramaze::Controller engine :etanni end The engine() method uses the provide() method (more on that in a second) to set the given engine for all data sent back to the visitor with a content type of "text/html". If you want to use a certain engine for a different content type (e.g. application/json) you can do so using the provide() method: class Blogs < Ramaze::Controller # Simple right? provide(:json, :erb) # Somewhat more verbose provide(:json, :engine => :erb) # AWESOME! provide(:json, :type => 'application/json') do |action, value| # "value" is the response body from our controller's method value.to_json end end It's important to remember that the actions in the provide() method will only be executed if it's first parameter (in this case "json") are appended to the URL as an extension. A request to /hello would output HTML when using the above code, if we wanted JSON we'd have to send a request to /hello.json. The default template engine used by Ramaze is Etanni. Etanni is a small template engine that ships with Ramaze (and Innate!) that's extremely fast and has a very simple syntax. Statements are wrapped in tags and rendering data can be done by wrapping the variables in ``#{}``: # accepts regular Ruby code

Hello Yorick

And who are you?

# Display our name #{@user.name} Etanni can be very useful for most project but it's *not* recommended to use it when you want to allow a client to manage certain templates (e.g. Email layouts). This is because Etanni allows you to execute regular Ruby code and thus someone could do some serious damage to your server without even knowing it. ramaze-2012.12.08/guide/general/ramaze_command.md0000644000004100000410000000666012140566653021447 0ustar www-datawww-data# @title Ramaze Command # Ramaze Command Ramaze ships with a relatively simple command, named "ramaze". This command can be used to create new applications as well as starting them. To make reading this guide easier we'll call this command "bin/ramaze" from now on.

Warning: bin/ramaze is not a scaffolding application. It can merely be used for some basic application management and creating a basic Ramaze application.

## Creating Applications As mentioned earlier bin/ramaze can be used to create new applications. In order to create a new application in the current directory all you have to do is executing the following command: $ ramaze create APPNAME APPNAME is the name of your new application and will also be used as the directory name. If the application was named "blog" there would now be a directory called "blog" in the current one. This directory will contain all basic files that can be used for a Ramaze powered application. ## Application Prototypes Due to Ramaze's nature it's very easy to create your own application prototype if you dislike the default one. For example, I've made some small modifications to the default prototype so that it looks like the followng: .__ app.rb |__ config |   |__ config.rb |   |__ database.rb |   |__ middlewares.rb |   |__ requires.rb | |__ config.ru |__ controller |__ layout |   |__ default.xhtml | |__ log |__ public |__ spec |__ start.rb |__ view This prototype is basically a minimal version of the default one but with a special directory for all configuration files. In order to use this prototype I had to make some small changes to app.rb, the look like the following: require 'ramaze' # Load the file that in turn will load all gems, keeps this file clean require __DIR__('config/requires') # Configure our application require __DIR__('config/config') # Load our database settings require __DIR__('config/database') # Load all Rack middlewares require __DIR__('config/middlewares') # Load all controllers Dir.glob(__DIR__('controller') + '/**/*.rb').each do |f| require f end This is only a basic example of the flexibility of Ramaze, I highly recommend you playing around with your own prototypes as it's a great way to learn the basics of Ramaze and to really understand how flexible Ramaze is.

Note: This prototype does not come with Ramaze, it's just an example of what you could make yourself.

## Running Applications When you've created an application there are three ways of running it. You can either use your server's command such as `thin` or `unicorn` but you can also use a supplied Rake task: $ rake ramaze:start If you want to stop the running application you can simply close it by using the key combination Ctrl+C.

Note: There are many different ways to start your application depending on the server you're using. Fore more information it's best to look at the documentation of your favorite webserver.

## Ramaze Console By default Ramaze allows you to start a console using either IRB or Pry. These consoles can be started by running `rake ramaze:irb` and `rake ramaze:pry` respectively. ramaze-2012.12.08/guide/general/models.md0000644000004100000410000000562312140566653017753 0ustar www-datawww-data# @title Models # Models Unlike other frameworks Ramaze does not ship with a database toolkit. One of the ideas of Ramaze is that it allows you to choose your own set of tools, you're not forced to use what we think is best. Ramaze allows you to use [ActiveRecord][ar], [Sequel][sequel] or anything else. For the simplicity of this user guide we'll use Sequel. In short, Sequel is a database toolkit that allows you to write SQL statements using Ruby methods as well as providing an ORM (Object Relationship Mapper). Let's say we're creating a simple blog application. Each blog has posts, comments, users and perhaps some categories. We're not going to create a model for each of these entities in this guide but instead we'll focus on the Post model. The most basic form of a model looks like the following: class Post < Sequel::Model end From this point on we can load our model (given we have established a database connection) and call methods from it. For example, if we want to retrieve the post with ID #1 we'd do the following: Post[1] # => SELECT * FROM posts WHERE id = 1 Performing a WHERE clause and retrieving a single record can be done by passing a hash to the [] method: Post[:title => 'Ramaze is Great'] # => SELECT * FROM posts WHERE title = 'Ramaze is Great' ## Controllers And Models Of course using a model on its own isn't really going to work. Let's combine our Post model mentioned earlier with a controller called "Posts". require 'ramaze' require 'model/post' class Posts < Ramaze::Controller map '/' def index @posts = Post.all end def edit(id) # Arguments are passed as strings so it's a good idea to convert them @post = Post[id.to_i] end end This is a somewhat more advanced example of how to use controllers and models. However, it's nothing ground breaking and shouldn't be too hard to understand. In the index() method we're simply retrieving all posts by calling Post#all and storing them in an instance variable. In the edit() method we're retrieving the post based on the given ID. In the edit() method the "id" variable is also converted to an integer. The reason for this is that Ramaze doesn't know what types the URI segments should be and thus passes them as a string to the called method. While Sequel itself won't have any trouble handling this it's a good practice to send the correct types as other database toolkits might trigger errors when they receive a string value while expecting an integer. ## Supported Toolkits * [ActiveRecord][ar] * [M4DBI][m4dbi] * [Sequel][sequel] * [DataMapper][datamapper] Besides these listed toolkits Ramaze should work with any other toolkit, these however are the ones that have been confirmed to work just fine with Ramaze. [sequel]: http://sequel.rubyforge.org/ [ar]: http://ar.rubyonrails.org/ [m4dbi]: https://github.com/Pistos/m4dbi [datamapper]: http://datamapper.org/ ramaze-2012.12.08/guide/general/cache.md0000644000004100000410000001226612140566653017534 0ustar www-datawww-data# @title Caching Data # Caching Data Caching data such as API responses, compiled templates or database results can give your application a big performance boost. Ramaze tries to make this as easy as possible by providing an API that allows you to use different cache mechanisms such as Memcache or Sequel using the same syntax. ## Available Drivers * {Ramaze::Cache::Sequel} * {Ramaze::Cache::LRU} * {Ramaze::Cache::MemCache} * {Ramaze::Cache::Redis} * {Ramaze::Cache::LocalMemCache} * {Innate::Cache::FileBased} * {Innate::Cache::DRb} * {Innate::Cache::Marshal} * {Innate::Cache::Memory} * {Innate::Cache::YAML} ## Manually Caching Data Besides making it easy to automatically cache various forms of data Ramaze also allows you to manually cache something using your favorite storage engine. In order to do this you'll first have to configure Ramaze so that it knows that you want to cache something, this can be done as following: Ramaze::Cache.options.names.push(:custom) Ramaze::Cache.options.custom = Ramaze::Cache::MemCache # Now we can cache the data Ramaze::Cache.custom.store('usernames', ['Pistos', 'Michael Fellinger']) From this point on you can cache your data by calling methods on ``Ramaze::Cache.custom``. ## Creating Drivers Odds are there's a cache driver out there that's not supported out of the box. Don't worry, adding your own cache driver is pretty easy and I'll try to explain it as best as I can. The first step is creating a basic skeleton for our cache class. In it's most basic form it looks like the following: # It's not required to declare the cache under the Ramaze namespace, feel free # to use a different name. module Ramaze # Note that Ramaze::Cache is a class, not a module. class Cache # This is our own custom cache class class CustomCache # Pre defines the required methods. This ensures all cache drivers can # be used in the same way include Cache::API end end end The next step is to override the methods that were created by including Ramaze::Cache::API. The first step is adding the method that prepares the cache by loading the driver provided by an external Rubygem (e.g. Dalli::Client for the Memcache driver) and creating the namespace for the cache. Assuming our gem is called "custom-cache" and the class it provides CustomCacheGem our cache_setup (that's the name of the setup method) method would look like the following: def cache_setup(hostname, username, appname, cachename) @namespace = [hostname, username, appname, cachename].compact.join('-') @client = CustomCacheGem.new(:namespace => @namespace) end The next step is to add the remaining methods so that we can actually use the cache. # Removes *all* keys from the cache def cache_clear @client.delete_all end # Removes the specified keys from the cache def cache_delete(*keys) keys.each do |k| @client.delete(k) end end # Retrieves the specified key or returns the default value def cache_fetch(key, default = nil) value = @client.get(key) if !value.nil? return value else return default end end # Stores the data in the cache and return the value def cache_store(key, value) @client.set(key, value) return value end Depending on the API of your cache mechanism the method names and the way they're used may vary. The entire cache class now looks like the following: # It's not required to declare the cache under the Ramaze namespace, feel free # to use a different name. module Ramaze # Note that Ramaze::Cache is a class, not a module. class Cache # This is our own custom cache class class CustomCache # Pre defines the required methods. This ensures all cache drivers can # be used in the same way include Cache::API # Prepares the cache def cache_setup(hostname, username, appname, cachename) @namespace = [hostname, username, appname, cachename].compact.join('-') @client = CustomCacheGem.new(:namespace => @namespace) end # Removes *all* keys from the cache def cache_clear @client.delete_all end # Removes the specified keys from the cache def cache_delete(*keys) keys.each do |k| @client.delete(k) end end # Retrieves the specified key or returns the default value def cache_fetch(key, default = nil) value = @client.get(key) if !value.nil? return value else return default end end # Stores the data in the cache and return the value def cache_store(key, value) @client.set(key, value) return value end end # CustomCache end # Cache end # Ramaze There really isn't that much to it when it comes to creating a cache driver. The important thing to remember is that the following methods are always required: * cache_setup * cache_clear * cache_delete * cache_fetch * cache_store ramaze-2012.12.08/guide/general/logging.md0000644000004100000410000000676212140566653020123 0ustar www-datawww-data# @title Logging # Logging Similar to the caching system Ramaze makes it easy to log information using a unified API, whether you're logging to a file, using Growl or something else. Ramaze itself only uses a single logger which logs to STDOUT by default. This logger is stored in ``Ramaze::Log``. While you can just use this particular logger it's recommended to create your own ones if you need to log specific types of data (such as API calls). Creating a custom logger works just like initializing a regular class. Say you want to rotate your log files based on the current date, in that case {Ramaze::Logger::RotatingInformer} should be used. To use this logger you'd simply do the following: logger = Ramaze::Logger::RotatingInformer.new('./log') This creates a new instance of the logger and tells it to store it's log files in the ``./log`` directory. Each log file's name is the date on which it was created in the format of ``yyyy-mm-dd``. Once a logger has been created you can use the following logging methods: * warn: logs a warning message. * debug: logs a debugging message such as "Connected to the database". * error: logs an error message, useful for logging validation errors and the like. * info: logging method for generic log messages that don't fit into a specific category. You can call these methods on the instance of a logger just like any other method: logger.info 'Logging data sure is easy to do!' ## Creating Custom Loggers Ramaze provides an API that makes it easy to create your own logging class. Each log class should include the module {Ramaze::Logging}, this module provides the basic setup for every logger and stops you from having to re-invent the wheel every time. class MyLogger include Ramaze::Logging end Each logger should respond to the instance method ``log()``. This method will be used by other methods such as ``error()`` and ``warn()``, therefor your logger is somewhat useless without this method. The ``log()`` method should take at least two parameters, the first one the logging level (such as "error") and the second (and all following parameters) should be messages to log. Lets add this method to the ``MyLogger`` class shown above: class MyLogger include Ramaze::Logging def log(level, *messages) end end Now you no longer get nasty errors when trying to log data. However, your data is also completely ignored (after all, the method isn't doing anything yet). What the ``log()`` method does is really up to you, whether you're logging to STDOUT, to a file or to a database. A basic example of logging to STDOUT using this class can be seen below. class MyLogger include Ramaze::Logging def log(level, *messages) messages.each do |message| $stdout.puts "#{level.upcase}: #{message}" end end end When using this class the output will look like the following: ruby-1.9.2-p290 :011 > logger = MyLogger.new => # ruby-1.9.2-p290 :011 > logger.info 'Hello Ramaze!' INFO: Hello Ramaze! Of course it doesn't stop here. You can add colors, timestamps and pretty much whatever you want. ## Available Loggers * {Ramaze::Logger::LogHub} * {Ramaze::Logger::Informer} * {Ramaze::Logger::Logger}: wrapper around the Logger class from the Stdlib. * {Ramaze::Logging}: basic skeleton for your own loggers. * {Ramaze::Logger::RotatingInformer}: logger that rotates log files based on the current date. * {Ramaze::Logger::Syslog}: logger that uses syslog. ramaze-2012.12.08/guide/general/special_thanks.md0000644000004100000410000000407012140566653021453 0ustar www-datawww-data# @title Special Thanks # Special Thanks There are a large number of people who made Ramaze possible by their ongoing efforts in the world of open source and by encouraging and helping me. This list is by no means a full listing of all these people, but I try to get a good coverage despite that. I would like to thank: * Yukihiro Matsumoto a.k.a matz For giving the world Ruby and bringing fun back into programming. * Zed Shaw a.k.a. zedas For developing Mongrel, Ramaze started out as a simple Hello World based on that awesome server. * Christian Neukirchen a.k.a chris2 For building rack, which is just what the numerous web-developers had anticipated and which will, with no doubt, change the world. * Pistos For continious encouragment and building the first real webpage on Ramaze. His bugreports were invaluable. * Jim Weirich For Rake, which lifts off a lot of tasks from the shoulders of every developer who uses it. * Thomas Sawyer a.k.a Trans Dragging me deep into the rabbit-hole and showing me how awesome Ruby truely is through his work on facets, ratchets and tons of other projects. * George Moschovitis a.k.a gmosx For his tremendous efforts in the Nitro/Og framework, which is a source of steady inspiration for Ramaze and brought me to Ruby in the first place. * Rob Levin a.k.a. lilo He founded the most excellent Freenode IRC-network, where the most important channels for rubyists are located (as is #ramaze). May he rest in peace. * Loren Segal For creating YARD. Without YARD we'd still be stuck using rdoc. * The guys (and gals) in the various channels on Freenode. As the people are way too many to be listed, here the channels that I call my online home. All the people in there deserve special thanks for getting me hooked to Ruby and providing their help in a friendly and patient manner: * \#nitro * \#ruby-de * \#ruby-lang * \#rubyforce I'd also like to thank the following people for contributing to the guide: * [Stas Sușcov](https://github.com/stas) * [John Pagonis](https://github.com/pagojo) ramaze-2012.12.08/guide/general/testing.md0000644000004100000410000001632412140566653020145 0ustar www-datawww-data# @title Testing Ramaze # Testing Ramaze Ramaze uses and encourages BDD (Behaviour Driven Development). Ramaze itself is tested using [Bacon][bacon] and supports it out of the box, it however isn't limited to just Bacon. One might wonder why to bother with writing tests. The answer to this is quite simple: stability. Manually testing an application works on a very basic level but there are various issues that will arise once your application grows. The two biggest issues are human errors and repeatability. Especially the latter becomes an issue when your development team grows in size, while the initial developer may be willing to manually test every feature every time a change has been made others might not. Even worse, there's a chance they won't test their code at all and assume it's production ready because on their setup. Writing tests that can be executed using a single command (or automatically) makes your life a lot easier as you no longer have to worry about any of these issues (assuming people actually write tests). Whenever somebody commits code they write a test and you can easily verify if it works on different setups by simply running said test. When writing Ruby code you can pick from a large collection of testing libraries such as Bacon and [Rspec][rspec] for general tests, [SimpleCov][simplecov] for code coverage and [Capybara][capybara] for testing form based actions and the like. Of course the list doesn't stop here, there's simply too much to discuss everything. ## Bacon Bacon is a small and lightweight Rspec clone that's used by Ramaze and Innate and is the recommended tool to use. Each bacon test consists out of at least two bits: a "describe" block and an "it" (or "should") block. The describe block can be seen as a group of multiple it/should blocks. In most cases these blocks are used to specify the name of a class, module, etc. The it/should blocks are used for individual tests. Lets take a look at a simple block of code: class Person attr_accessor :name def initialize(name = nil) @name = name end end Using Bacon we can test this code as following: require 'bacon' describe 'Person' do should 'respond to #name' do person = Person.new person.respond_to?(:name).should == true person.respond_to?(:name=).should == true end should 'set the name in the constructor' do person = Person.new('Matz') person.name.should == 'Matz' end should 'set the name using #name=' do person = Person.new person.name = 'Matz' person.name.should == 'Matz' end end For more information on the syntax of Bacon and other information see the [Bacon Github project][bacon]. ### Bacon With Ramaze Ramaze makes it easy to test your code using Bacon by providing you with a small helper file. This file can be loaded as following: require 'ramaze/spec/bacon' This file adds two bacon contexts (rack_test and webrat), configures Ramaze to only show error messages and adds a few helper methods. ### Bacon and Rack::Test In order to test Ramaze specific code you'll need to use a tool that's capable of mocking Rack requests or execute this request in a different way (e.g. using Selenium). Rack::Test (gem install rack-test) makes it possible to test your Rack based (and thus Ramaze) applications without having to use a webbrowser. Ramaze makes it easy to use Rack::Test by defining a special bacon context: "rack_test". This context can be used by calling `behaves_like :rack_test` inside your describe block: describe 'Using Rack::Test' do behaves_like :rack_test end Once loaded you can execute HTTP requests using methods such as `get`: describe 'Using Rack::Test' do behaves_like :rack_test should 'display the homepage' do get('/').body.should == 'Hello, Rack::Test!' end end More information about Rack::Test can be found on the [Github page of Rack::Test][rack-test]. ## Capybara Capybara is a Gem that can be used to simulate browser requests using Rack::Test, Selenium or other drivers, it's even capable of testing Javascript based code using Selenium. In order to use Capybara you must first install it: $ gem install capybara Once installed you'll have to configure Capybara so it knows how to use your Ramaze application. Depending on the testing Gem you're using you'll also have to configure said Gem, for this guide it's assumed that you're using Bacon. First you should load and configure Capybara: require 'capybara' require 'capybara/dsl' require 'bacon' # Tells Capybara which driver to use and where to find your application. # Without this Capybara will not work properly. Capybara.configure do |config| config.default_driver = :rack_test config.app = Ramaze.middleware end Next you'll have to set up a context for Bacon: shared :capybara do Ramaze.setup_dependencies extend Capybara::DSL end Last but not least, make sure Ramaze knows about your root directories and set your mode: Ramaze.options.roots << 'path/to/spec/directory' Ramaze.options.mode = :spec Once all of this has been done you can start using Capybara. A simple example of this is the following: class MainController < Ramaze::Controller map '/' def index return 'Hello, Ramaze!' end def redirect_request redirect(MainController.r(:index)) end end describe 'Testing Ramaze' do behaves_like :capybara it 'Go to the homepage' do visit '/' page.has_content?('Hello, Ramaze!').should == true end it 'Follow redirects' do visit '/redirect_request' page.current_path.should == '/index' page.has_content?('Hello, Ramaze!').should == true end end For more information on how to use Capybara with other testing tools, how to use the syntax and so on you should resort to the [Capybara Github page][capybara]. ## Code Coverage using SimpleCov To test the Ramaze application tests coverage, you can use a tool like [SimpleCov][simplecov]. SimpleCov requires minimal effort to get integrated, start by installing the gem: gem install simplecov In order to actually measure your code coverage you'll have to tell SimpleCov a bit about your application. This is done by loading Simplecov and starting it *before* loading all your tests. This can be done by using the following code: require 'simplecov' SimpleCov.start # Load the existing files Dir.glob('spec/*.rb').each do |spec_file| unless File.basename(spec_file) == 'init.rb' require File.expand_path(spec_file) end end In order to run the file you'd simply invoke the following: bacon spec/init.rb Upon success SimpleCov will create a new directory ``coverage`` with the results. You can point your browser to the index.html file inside that directory to view the results. For more information on using Simplecov see the [Github project][simplecov]. [bacon]: https://github.com/chneukirchen/bacon [simplecov]: https://github.com/colszowka/simplecov [rspec]: http://relishapp.com/rspec [capybara]: http://jnicklas.github.com/capybara/ [rack-test]: https://github.com/brynary/rack-test ramaze-2012.12.08/guide/general/upgrading.md0000644000004100000410000000521712140566653020447 0ustar www-datawww-data# @title Upgrading # Upgrading Ramaze strives to be backwards compatible between each release. However, some releases may contain changes that are *not* backwards compatible. This document describes the steps required to upgrade between these releases. ## Upgrading to Ramaze 2012.12.08 Ramaze 2012.12.08 is **not** backwards compatible with previous releases due to changes made in Innate 2012.12. ### Middleware In previous versions one could add Rack middleware using `Ramaze.middleware!`. This method has been renamed to `Ramaze.middleware` (without the `!`) and its use has been changed. Instead of calling `run Ramaze.middleware` one now has to use `run Ramaze.core`. An example of the old way of defining middleware: Ramaze.middleware! :dev do |m| m.use Rack::Lint m.run Ramaze.middleware end The new way of defining middleware: Ramaze.middleware :dev do use Rack::Lint run Ramaze.core end ### Commands Various executable commands such as `ramaze start` and `ramaze console` have been removed in favour of the use of Rake tasks. For existing projects that do not have these Rake tasks you'll have to import them manually, new projects will have these tasks automatically. These tasks are located [here][rake tasks]. These commands were removed as they contained a lot of old and rotting code without any tests. Some of them, such as `ramaze start` weren't very useful either as most people will use the commands for their webservers (e.g. Thin) instead. The use of Rake tasks also makes it possible for people to customize these to their liking. ### Snippets Ramaze ships with various snippets that extend various core Ruby classes. In Ramaze 2012.12.08 a lot of these snippets have been removed. A list of all the removed snippets can be found [here][removed snippets]. ### Loggers The following logging classes are no longer available: * Ramaze::Logger::Growl * Ramaze::Logger::Analogger * Ramaze::Logger::Knotify * Ramaze::Logger::Xosd ### Helpers The following helpers have been removed: * Ramaze::Helper::Disqus * Ramaze::Helper::Ultraviolet ### Core classes The following core classes have been removed: * Ramaze::AppGraph * Ramaze::Plugin * Ramaze::MiddlewareCompiler (alias of Innate::MiddlewareCompiler) ### Prototypes The prototype generated by `ramaze create` has been changed. It contains a set of Rake tasks, a README, a Gemfile and some other small changes compared to the previous prototype. Existing projects are not affected. [rake tasks]: https://github.com/Ramaze/ramaze/blob/master/lib/proto/task/ramaze.rake [removed snippets]: https://github.com/Ramaze/ramaze/commit/7e966dcdec50d490eb828f7673f101b1a6b087b3 ramaze-2012.12.08/guide/general/controllers.md0000644000004100000410000001722112140566653021033 0ustar www-datawww-data# @title Controllers # Controllers When developing web applications controllers are the elements that are called by a browser. When visiting a page a request is made that is processed by Rack and sent to Ramaze. Ramaze in turn will determine what controller to call. To make understanding controllers a bit easier will use a real world example. Let's say we're in a restaurant and want to order some food. The waiter of the restaurant can be seen as a controller. We'll talk to it and tell him what we want to have for dinner but the waiter itself won't actually prepare our dinner, instead it will merely tell the cooks to make the dinner and bring it to you once it's done. The waiter is our controller, the cook is our model and our meal can be seen as the view. In a typical application the entire flow of a request is as following: Request --> Server (Thin, Unicorn, etc) --> Rack --> Ramaze --> Controller ## Ramaze & Controllers In Ramaze controllers are plain Ruby classes that extend Ramaze::Controller. The most basic controller looks like the following: class ControllerName < Ramaze::Controller map '/uri' def index end end Let's walk through this snippet step by step. The first line declares a new class that extends {Ramaze::Controller}. Extending this base class is very important, without it we won't be able to call controller specific methods such as the `map()` method. This method, which is called on line 2, is used to instruct Ramaze what controller is bound to what URI (Uniform Resource Identifier). The argument of this method should be a string starting with a /. The reason for this is that the URIs are relative to URL the application is running on. For example, if our application was running at ramaze.net a URI of "/blog" would mean the controller can be found at ramaze.net/blog. Let's move to the next lines of code. The next lines of code define a new method called "index". By default Ramaze will try to call this method if no URI after the mapped URI is given. In our /blog example a call to ramaze.net/blog would call `BlogController#index` but a call to `ramaze.net/blog/entry/10` would call `BlogController#entry(10)`. All methods that are declared as public can be accessed by a user and by default the `index()` method is called if no other method is specified. Don't like the `index()` method? No problem, you can specify a different default method to call as following: class ControllerName < Ramaze::Controller trait :default_action_name => 'default' def default end end We're not going to cover Traits too much in this chapter as there's a dedicated chapter for them but in short they're a way of setting configuration options. In this case we're using the trait `default_action_name` to specify what the name of the default method should be. By default this is set to "index" but in the above example it was changed to "default". ### Method Arguments As mentioned above methods are bound to URLs given they're declared as public methods. The same applies to the arguments of such methods, if the method is public these arguments can be set from the URL. This means that you don't have to use a special DSL just to bind methods to certain URLs while taking various parameters into account. An example is the following: class Pages < Ramaze::Controller map '/pages' def index # Overview of all pages end def edit(id) # Edit the page for the given ID end end This controller would allow users to navigate to `/pages/edit/10` which would invoke `Pages#edit("10")`. There's no restriction on the values of parameters (as long as they don't include slashes), they are however always passed as strings to the method. One thing to keep in mind is that if a method takes a set of required parameters that are *not* specified Ramaze will *not* call the method, it will instead show a message that the request could not be executed due to a missing method/controller (unless your application has a custom handler for this). Using the code above navigating to `/pages/edit/10` would work but navigating to `/pages/edit` would not since the "id" parameter is specified as a required parameter but wasn't given in the URL. Don't worry, working around this is as easy as specifying a default value for your parameters: class Pages < Ramaze::Controller map '/pages' def index # Overview of all pages end def edit(id = nil) # Edit the page for the given ID end end With this modification the `edit` method will be called for URLs such as `/pages/edit`, `/pages/edit/10` and so on. ### Catch-all Methods Sometimes you want to create a controller in which a single method handles all the requests. This can be done by creating an `index` method that takes a variable amount of parameters: class Pages < Ramaze::Controller map '/pages' def index(*args) end end In this example `Pages#index` would be called for URLs such as `/pages`, `/pages/example`, `/pages/edit/10` and so on. The exception to this is URLs that point to existing methods. An example: class Pages < Ramaze::Controller map '/pages' def index(*args) return 'index' end def example return 'example' end end If a user were to browse to `/pages/hello` the index method would be called and "index" would be displayed, when the user instead goes to `/pages/example` the text "example" would be displayed as there's an existing method for this URI. However, if the user would request `/pages/example/10` the index method would again be called, this is because the example method does not take any parameters. Below is a list of various URLs and what method calls they'd result in. /pages # => Pages#index /pages/index # => Pages#index /pages/edit/10 # => Pages#index("edit", "10") /pages/example # => Pages#example /pages/example/10 # => Pages#index("example", "10") ## Registering Controllers By now you might be thinking "How does Ramaze know what controller to call? I didn't initialize the controller!". It's true, you don't have to manually initialize the controller and save it in a hash or somewhere else. The entire process of registering a controller is done by the map() method and thus is one of the most important methods available. When calling this method it will store the name of the class that invoked it and bind it to the given URI. Whenever a request is made Ramaze simply creates an instance of the matching controller for a given URI. The basic process of the map() method is as following: 1. Call `map()`. 2. Validate the given URI. 3. Store the controller constant. 4. Done. ## Base Controllers In many applications you'll have separate areas such as an admin panel and the frontend. Usually you want to authenticate users for certain controllers, such as those used for an admin panel. An easy way of doing this is by putting the authentication call in a controller. By creating a base controller and extending it you don't have to call the method that authenticates the user over and over again. Because Ramaze is just Ruby all you have to do to achieve this is the following: class AdminController < Ramaze::Controller end class Users < AdminController end If your base controller has an initialize() method defined you should always call the parent's initialize() method to ensure everything is working properly. This can be done by calling super(): class AdminController < Ramaze::Controller def initialize # Calls Ramaze::Controller#initialize super # Custom calls can be placed here... # ... end end ramaze-2012.12.08/guide/general/routes.md0000644000004100000410000000612512140566653020007 0ustar www-datawww-data# @title Routes # Routes While in many cases the default route system that comes with Ramaze is good enough there will be times when you want pretty URLs (or just different ones). Ramaze allows you to do all this using the class Ramaze::Route (it's an alias of Innate::Route). This class allows you to create routes using simple strings, regular expressions and lambdas. Let's say we have the following URLs: * /users/index * /users/profile/yorickpeterse * /users/edit/yorickpeterse Our goal is to rewrite these URLs to the following: * /users/list * /users/yorickpeterse * /users/yorickpeterse/edit In order to fully explain the routing system will use the three available possibilities: strings, regular expressions and lambdas. ## String Routes Routes that use a string are the most basic form of routing. You simply specify a request URI and the action to call instead of the normal one: Ramaze::Route['/foobar'] = '/baz/bar' This route tells Ramaze that every request to /foobar should be sent to /baz/bar instead. While string based routes are the easiest to use they're also the most limited one, they can merely be used to redirect A to B. If we look at our list of URLs the only one we can rewrite using this form of routing is the first one: Ramaze::Route['/users/list'] = '/users/index' This forwards all requests that were sent to /users/list to /users/index. ## Regular Expression Routes Using regular expressions in routes makes it possible to have more dynamic routes. Routes that use regular expressions look like the following: Ramaze::Route[/user-([0-9]+)/] = '/users/%d' This route forwards requests such as /user-10 and /user-1234 to /users/10 and /users/1234. As you can see there's a "%d" in the value which is replaced with the value of the group ([0-9]+). When using regular expressions for your routes you can use sprintf characters in the value (%s, %d, etc). So what about our list of URLs? Let's rewrite the second URL: Ramaze::Route['/users/([\w]+)'] = '/users/profile/%s' And there we go, all calls to /users/NAME (where NAME is the name of a user) will be routed to /users/profile/NAME. ## Lambda Routes The last method of routing calls can be done using lambdas. The key of the []= method will be the name of a route (can be anything really) and the value a lambda that takes two parameters, the request path and a variable containing the request data: Ramaze::Route['my funky lambda route'] = lambda do |path, request| end In this lambda you're free to do whatever you want as long as you either return a new path or nil (anything else will result in an error). Say we wanted to route our last URL we'd do it as following: Ramaze::Route['edit users'] = lambda do |path, request| if path =~ /users\/edit\/([\w]+)/ return "/users/#{$1}/edit" end end This route redirects everything from /users/NAME/edit to /users/edit/NAME. Everything else is unaffected by this route since it only returns a value when the path matches the given regular expression. Note that lambdas can actually contain a "return" statement so the code above is perfectly valid. ramaze-2012.12.08/guide/general/configuration.md0000644000004100000410000001324712140566653021340 0ustar www-datawww-data# @title Configuration # Configuration Ramaze provides two ways of setting configuration options, using ``Ramaze::Optioned`` and ``Ramaze::Traited``. Both Ramaze::Optioned and Ramaze::Traited are aliases for Innate::Optioned and Innate::Traited respectively. ## Traits using Ramaze::Traited Traits provide a way of setting configuration options in a class similar to class variables. The advantage of using traits is that they are inherited in classes which allows you to use different values for a trait in a parent and child class. On top of that you can access traits outside of a class' scope (class variables are private). Ramaze uses traits for various configuration settings that are specific to a certain class' instance or module. ``Ramaze::Optioned`` can't be used for this since the options set would be the same for all instances whereas traits can have their own values. Using traits is quite simple and can be done by including the module Ramaze::Traited into your class: class Something include Ramaze::Traited end This module can be included into controllers, models or any other class. Once this module has been included into a class you can define a trait using the method ``trait()``. This method takes a hash where the key is the name of the trait and the value the value for that trait: class Something include Ramaze::Traited trait :language => 'ruby' end Inside a class instance traits can also be retrieved using this method by simply specifying the name of the trait: class Something include Ramaze::Traited trait :language => 'ruby' def language puts "Language: #{trait[:language]}" end end Outside of a class' instance you can still retrieve a trait but you need to call ``class_trait()`` instead: Something.class_trait[:language] # => "ruby" Another cool feature of ``Ramaze::Traited`` is that you can get a list of all traits of a class and all it's parent classes using ``ancestral_trait()``. This method retrieves all traits where each trait that's redefined will overwrite the existing one. Example: class Foo include Ramaze::Traited trait :one => :eins, :first => :erstes end class Bar < Foo trait :two => :zwei end class Foobar < Bar trait :three => :drei, :first => :overwritten end Foobar.ancestral_trait # => {:three => :drei, :two => :zwei, :one => :eins, :first => :overwritten} ## Options using Ramaze::Optioned Ramaze::Optioned can be used to set global options regardless of the instance of a class. Options set using this module are also inherited but you can't set different values for different instances. A good use case for Ramaze::Optioned is the helper ``Ramaze::Helper::Email``. This helper specifies certain options such as the SMTP host and username. These options don't change in a request or in an instance of a controller so using traits would be useless. It's also quite rare that you want to use different settings in a sub controller. Settings options using Ramaze::Optioned works a bit different compared to traits but don't worry, it's very easy. First you must include the module and then call ``options.dsl()`` as shown below. class Something include Ramaze::Optioned options.dsl do end end Inside the block passed to ``options.dsl()`` you can call the ``option`` method (aliased as ``o`` so you have to write less code). This method has the following syntax: option(description, name, default value) Say we want to define a option that allows the user to change a username, this can be done as following: class Something include Ramaze::Optioned options.dsl do o 'Defines the username', :username, 'ramaze' end end Once an option is set it can be retrieved by calling ``options`` on the class (regardless of whether or not the call was made inside an instance): # Outside of the class Something.options.username # => "ramaze" # Inside the class options.username # => "ramaze" Dumping the entire options object to the command line using ``puts`` (or something similar) will also show the description of each option, the default value, etc: Something.options # => {:username=>{:doc=>"Defines the username", :value=>"ramaze"}} ## Configuring Paths While Ramaze is a very flexible framework it requires some basic information about the location of your views, layouts and so on. Ramaze does not automatically try to locate these but instead uses a set of defined locations to look for. These paths are set using ``Ramaze::Optioned`` and can be found in the following options: * Ramaze.options.views * Ramaze.options.publics * Ramaze.options.layouts * Ramaze.options.roots Helpers aren't defined in these paths as they're considered a separate part of Ramaze. Instead of using ``Ramaze.options`` you'll have to update ``Ramaze::HelpersHelper.options.paths``. Note that ``Ramaze.options.roots`` and ``Ramaze::HelpersHelper.options.paths`` are the only two options that use absolute paths, all other paths are relative to the root directories. Let's say you want to have an extra view directory called "templates", this directory can be added as following: Ramaze.options.views.push('templates') If the "templates" directory is located a level above the application root you'd do the following instead: Ramaze.options.views.push('../templates') As mentioned before the root directories are absolute, this means that if you want to add a root directory you have to specify the full path to it: Ramaze.options.roots.push('/path/to/another/root/directory') Technically you can specify relative paths but this might lead to unexpected behavior so it's not recommended. ramaze-2012.12.08/guide/general/helpers.md0000644000004100000410000000713512140566653020132 0ustar www-datawww-data# @title Helpers # Helpers Helpers are simple modules that can be used in controllers to prevent developers from having to write the same code over and over again. There's no actual definition of how helpers should be used and what they should do but the general idea is quite simple, all logic that may be shared among controllers should go in a helper. For example, Ramaze ships with it's own layout helper that adds a method ``set_layout()`` (see the {file:general/views Views} chapter). In order to use a helper there are a few guidelines it should follow. The most important guideline (or rule) is that it should be declared under the Ramaze::Helper namespace. Say your helper is called "Cake" this would result in Ramaze::Helper::Cake as the full name. The second rule/guideline is that helpers should be placed in the "helper" directory of your Ramaze application (or any other directory added to the list of helper paths). This is required in order to load helpers the ramaze way, otherwise you'll have to manually load each helper. ## Loading Helpers Loading helpers the Ramaze way is pretty easy and can be done using the method helper(): class Blogs < Ramaze::Controller helper :cake end This method can load multiple helpers in a single call as well: class Blogs < Ramaze::Controller helper :cake, :pie, :candy end If you have your helper located somewhere else or don't want to use the helper() method you can just include each helper the regular way: class Blogs < Ramaze::Controller include Ramaze::Helper::Cake include Ramaze::Helper::Pie include Ramaze::Helper::Candy end As you can see this requires more lines of code and thus it's recommended to load all helpers the Ramaze way. ## Available Helpers * {Ramaze::Helper::Auth}: basic authentication without a model. * {Ramaze::Helper::Bench}: basic benchmarking of your code. * {Ramaze::Helper::BlueForm}: makes building forms fun again. * {Ramaze::Helper::Cache}: caching of entire actions and custom values in your controllers. * {Ramaze::Helper::CSRF}: protect your controllers from CSRF attacks. * {Ramaze::Helper::Email}: quick and easy way to send Emails. * {Ramaze::Helper::Erector} * {Ramaze::Helper::Flash} * {Ramaze::Helper::Gestalt}: helper for {Ramaze::Gestalt}. * {Ramaze::Helper::Gravatar}: easily generate Gravatars. * {Ramaze::Helper::Identity}: helper for OpenID authentication. * {Ramaze::Helper::Layout}: easily set layouts for specific actions. * {Ramaze::Helper::Link} * {Ramaze::Helper::Localize} * {Ramaze::Helper::Markaby} * {Ramaze::Helper::Maruku} * {Ramaze::Helper::Paginate}: easily paginate rows of data. * {Ramaze::Helper::Remarkably} * {Ramaze::Helper::RequestAccessor} * {Ramaze::Helper::SendFile} * {Ramaze::Helper::SimpleCaptcha}: captches using simple mathematical questions. * {Ramaze::Helper::Stack} * {Ramaze::Helper::Tagz} * {Ramaze::Helper::Thread} * {Ramaze::Helper::Upload}: uploading files made easy. * {Ramaze::Helper::UserHelper}: authenticate users using a model. * {Ramaze::Helper::XHTML} ## Innate Helpers Note that you may also find some popular helpers, that are used by default in Ramaze, under the Innate project. * {Innate::Helper::Aspect}: provides before/after wrappers for actions. * {Innate::Helper::CGI}: gives shortcuts to some CGI methods. * {Innate::Helper::Flash}: gives simple access to session.flash. * {Innate::Helper::Link}: provides the path to a given Node and action. * {Innate::Helper::Redirect}: provides the request redirect, raw_redirect and respond convenience methods. * {Innate::Helper::Render}: provides variants for partial, custom, full view rendering. ramaze-2012.12.08/guide/CHANGELOG0000644000004100000410000263206212140566653015750 0ustar www-datawww-data[679c415 | Sat Dec 08 18:16:36 UTC 2012] Yorick Peterse * Added a note about upgrading. [ci skip] Signed-off-by: Yorick Peterse [6191bdf | Sat Dec 08 17:35:15 UTC 2012] Yorick Peterse * Disable syslog tests on jruby. The Syslog tests can not be executed on jruby due to the use of Process.fork. Signed-off-by: Yorick Peterse [5be0d61 | Sat Dec 08 17:27:21 UTC 2012] Yorick Peterse * Enable syslog and disable localmemcache for jruby. Signed-off-by: Yorick Peterse [d8fdd3d | Sat Dec 08 17:16:47 UTC 2012] Yorick Peterse * Don't install C extensions for jruby. Signed-off-by: Yorick Peterse [8c271b7 | Sat Dec 08 17:08:22 UTC 2012] Yorick Peterse * Replaced hpricot with Nokogiri. Signed-off-by: Yorick Peterse [c35a729 | Sat Dec 08 01:21:43 UTC 2012] Yorick Peterse * Don't install localmemcache for jruby. Localmemcache is a C extension and these don't work reliably on Jruby. C extension support is also disabled on Travis CI. Signed-off-by: Yorick Peterse [aad4e3e | Fri Dec 07 23:28:01 UTC 2012] Yorick Peterse * Release 2012.12.08b Signed-off-by: Yorick Peterse [d94938b | Fri Dec 07 23:27:39 UTC 2012] Yorick Peterse * Switch back to dates for versions. Signed-off-by: Yorick Peterse [c57c6e8 | Fri Dec 07 23:22:56 UTC 2012] Yorick Peterse * Use 3.0.0 for the next version. Due to the way Rubygems sorts Gem versions using the version number "2.0.0" would producte unreliable results. Signed-off-by: Yorick Peterse [30abe12 | Fri Dec 07 22:07:54 UTC 2012] Yorick Peterse * Strip newlines of the confirmation message. Signed-off-by: Yorick Peterse [1cf5ce9 | Fri Dec 07 22:06:36 UTC 2012] Yorick Peterse * Build the gem before pushing it. Signed-off-by: Yorick Peterse [e8ff001 | Fri Dec 07 22:05:03 UTC 2012] Yorick Peterse * Release 2.0.0b Signed-off-by: Yorick Peterse [f73e5c4 | Fri Dec 07 22:04:43 UTC 2012] Yorick Peterse * Uncommented the Git commands in the release task. Signed-off-by: Yorick Peterse [95bcea8 | Fri Dec 07 22:03:54 UTC 2012] Yorick Peterse * Updated the release Rake tasks. Signed-off-by: Yorick Peterse [720daea | Fri Dec 07 22:03:34 UTC 2012] Yorick Peterse * Auto generate the release date. Signed-off-by: Yorick Peterse [45cbb80 | Fri Dec 07 21:49:25 UTC 2012] Yorick Peterse * New setup for writing Ramaze applications. Most of the code from the `ramaze` command has been removed from the executable into individual Rake tasks located in the prototype. This makes it easier for developers to customize these parts (e.g. by using a custom REPL) as well as making it easier to maintain Ramaze itself. With these changes I've also removed the tutorials section from the userguide. It hasn't been updated in a while and with these changes was no longer really useful. In short the following changes: * ramaze start => rake ramaze:start * ramaze console => rake ramaze:irb or rake ramaze:pry * Rake is now a dependency of Ramaze so that it's installed when installing Ramaze * ramaze stop, status and restart have been removed Signed-off-by: Yorick Peterse [8d53dca | Fri Dec 07 20:22:16 UTC 2012] Yorick Peterse * Fixed a bunch of YARD formatting errors. Signed-off-by: Yorick Peterse [938a9c4 | Fri Dec 07 20:11:34 UTC 2012] Yorick Peterse * Updated the documentation on logging. Signed-off-by: Yorick Peterse [03352e5 | Fri Dec 07 20:04:35 UTC 2012] Yorick Peterse * CSRF expiration and custom field names. CSRF tokens are no longer expired during a existing session. Automatically expiring them doesn't make things a whole lot more secure. It also makes it impossible to use the same session in multiple browser windows/tabs, this is due to the token being re-generated upon successful requests which in turn would invalidate existing tokens. Developers are now also able to specify a custom name for the field containing the CSRF token. This can be done by setting `Ramaze::Helper::CSRF.options.field_name`. This commit fixes #31. Signed-off-by: Yorick Peterse [900d4e7 | Fri Dec 07 19:52:36 UTC 2012] Yorick Peterse * Fix for storing data using the Sequel cache. Due to a bug the Sequel cache would store data for all users, this has been fixed by filtering out records based on the unique namespaced key for each user. This commit fixes #54. thanks to @joegsn for reporting it. Signed-off-by: Yorick Peterse [f79efba | Fri Dec 07 19:47:20 UTC 2012] Yorick Peterse * Updated the version number. Signed-off-by: Yorick Peterse [4758a06 | Thu Dec 06 23:41:39 UTC 2012] Yorick Peterse * Updated the Travis configuration. Ruby versions based on 1.8 will no longer be tested. Signed-off-by: Yorick Peterse [b1df1f5 | Thu Dec 06 23:37:08 UTC 2012] Yorick Peterse * Removed more useless helpers/loggers. Signed-off-by: Yorick Peterse [b3662f0 | Thu Dec 06 23:10:37 UTC 2012] Yorick Peterse * Removed ramaze/spec.rb. This file has been deprecated for a long time. Signed-off-by: Yorick Peterse [2024702 | Thu Dec 06 23:07:56 UTC 2012] Yorick Peterse * Removed Ramaze.setup, Plugin and AppGraph. Ramaze.setup was removed due to the lack of tests and Bundler (and similar tools) being a much better tool to solve this problem. Ramaze::Plugin and Ramaze::AppGraph were also removed due to the lack of tests and not being used internally. Signed-off-by: Yorick Peterse [7e966dc | Thu Dec 06 22:53:25 UTC 2012] Yorick Peterse * Removed a ton of snippets. Most of these snippets were either unused by Ramaze itself or were originally added to provide compatibility between Ruby 1.8/1.9. There also werent any tests for quite a few of these snippets. Signed-off-by: Yorick Peterse [86cc398 | Thu Dec 06 21:50:43 UTC 2012] Yorick Peterse * Removed a left over reference to Growl. Signed-off-by: Yorick Peterse [0e45ce9 | Thu Dec 06 21:44:51 UTC 2012] Yorick Peterse * Removed the Growl logger. This logger was fairly useless for both development and production environments. It was also a pain to test, even on OS X. Signed-off-by: Yorick Peterse [dfbb949 | Thu Dec 06 21:40:31 UTC 2012] Yorick Peterse * Cleaning up shop. To make it easier for developers to hack on Ramaze I've started changing several parts of Ramaze related to how it handles dependencies and how the release process is executed. To make things easier I've added a Gemfile to the project (as well as an updated .gems file). This means people can install the development gems by simply running `bundle install`. Signed-off-by: Yorick Peterse [b9d1294 | Wed Dec 05 23:27:38 UTC 2012] Yorick Peterse * New way of setting middleware. Middleware are now set similar to how it's done in Innate HEAD. Signed-off-by: Yorick Peterse [2f52ae6 | Wed Oct 03 22:37:16 UTC 2012] Yorick Peterse * Fixed Ramaze's middleware handling. Turns out that calls such as `self.app` (see the various commits I made in the Innate repository) can be a bit of a pain. While Ramaze "mirrors" the various Innate constants it would apparently create a clone of `Innate.app` instead of a reference (maybe something else equally weird was going on though). Fixing this was rather easy, after I found out what the heck was going on. I removed `Ramaze.recompile_middleware` since it offers no benefits over `Innate.recompile_middleware` as well as having changed a few references to `Innate.app`. This along with the various changes I made to the Innate code means that Ramaze now plays along nicely with Innate. Since I'm currently on a plane somewhere high in the sky (insert Top Gun tune here) there's a chance my way of thinking has gone wack. Because of that I'm asking @manveru and @leucos to take a look at this commit for some much needed feedback. Signed-off-by: Yorick Peterse [2deb0c5 | Mon Sep 24 16:04:46 UTC 2012] Michael Fellinger * fix middlewares [1887faa | Wed Sep 19 10:00:45 UTC 2012] Isak Andersson * Fixes small grammatic typo in configuration.md "Ramaze does not automatically tries to" -> "Ramaze does not automatically try to" [523ade0 | Thu Jul 19 10:14:07 UTC 2012] Arnaud Meuret * Escape % sequences before handing messages to ::Syslog [2baf79c | Sun Jul 15 18:30:49 UTC 2012] Yorick Peterse * Simplified loading of Rack::ETag. Checking for the arity of Rack::ETag is no longer needed. Signed-off-by: Yorick Peterse [abd969b | Sun Jul 15 18:25:14 UTC 2012] Yorick Peterse * Fixed the file dispatcher specification. Signed-off-by: Yorick Peterse [f9fb78c | Sun Jul 15 18:24:10 UTC 2012] Yorick Peterse * Fixed the directory dispatcher specification. Signed-off-by: Yorick Peterse [723bc3c | Sun Jul 15 18:18:57 UTC 2012] Yorick Peterse * Use Ramaze.middleware instead of .middleware! Signed-off-by: Yorick Peterse [d0c4ef2 | Sun Jul 15 18:18:52 UTC 2012] Yorick Peterse * Remove the dependency on RackFileWrapper. Signed-off-by: Yorick Peterse [6f0be19 | Sun Jul 15 18:18:51 UTC 2012] Yorick Peterse * Remove the dependency on RackFileWrapper. Signed-off-by: Yorick Peterse [a7ca4e7 | Sun Jul 15 17:57:29 UTC 2012] Yorick Peterse * Initial steps for Ramaze 2.0. Signed-off-by: Yorick Peterse [f46eb24 | Sun Jun 24 22:39:53 UTC 2012] Michel Blanc * Fixes issue #43 Closes uploaded file, since leaving it opened doesn't seem to be required, and it might lead to issues on Win32. Added spec to check that file has been closed. [2b59453 | Sun Jun 24 14:52:16 UTC 2012] Yorick Peterse * Clarify that layouts should be set outside actions Signed-off-by: Yorick Peterse [6fb93b5 | Fri Jun 15 20:38:20 UTC 2012] Michel Blanc * Adds sid regenration on user logout When Ramaze::Helper::UserHelper#_logout is called, the session.sid is not regenerated. This can confuse session tracking libraries that rely on session IDs. This patch forces _logout to regenerate a sid. A test is included to ensure sid rotation at logout. [724bb3f | Thu May 17 18:58:41 UTC 2012] Claudemiro * Ramaze::Controller.generate_mapping must respect custom irregular mappings. [f0a1423 | Wed May 16 20:13:18 UTC 2012] Claudemiro * Spec doesn't map Module::Controller This spec was missing. [deafc3b | Wed May 16 19:57:57 UTC 2012] Claudemiro * Fix generate_mapping method in Ramaze::Controller This method should generate the URI for the full namespace of the class: Irregular: 1. Controller should map to nil 2. Module::Controller should map to nil 3. MainController should map to / 4. Module::MainController should map to /module Regular: 1. ClassController should map to /class 2. Class should map to /class 3. Module::ClassController should map to /module/class [edabd3c | Mon May 14 17:53:04 UTC 2012] Yorick Peterse * Make Ramaze::Cache app aware. Innate used a hardcoded value of "pristine" for cache namespaces due to not having a concept of applications such as Ramaze has. This meant that if you had two applications running on the same host and user as well as using the same cache (e.g. Memcached) you'd end up with the problem of data being overwritten by these applications. For example, assume you have two applications: 1. "a" 2. "b" If you were to run these applications on host "myhost" and user "myuser" you'd end up with the following cache keys, regardless of the value of `Ramaze.options.app.name`: 1. myhost-myuser-pristine-memcached 2. myhost-myuser-pristine-memcached This commit will change those keys to the following: 1. myhost-myuser-a-memcached 2. myhost-myuser-b-memcached Of course this assumes you've properly set the application names. If these are not set the code will default to "pristine". Signed-off-by: Yorick Peterse [9c4e39c | Mon May 14 17:20:26 UTC 2012] Yorick Peterse * render_partial() does call an action. The documentation has been updated to clarify that render_partial() does call an action opposed to render_view() which does not. Signed-off-by: Yorick Peterse [4f7651e | Sat May 12 19:04:02 UTC 2012] Michel Blanc * Fixes typo from last commit and adds blueform object paramter explanation Last commit introduced typos, which this patch corrects. A small blurb is added to explain one of the coolest thing that can be done with blueform: memoizing user entry and redisplay the form after server side form (in)validation. [67a0acd | Sat May 12 18:52:03 UTC 2012] Michel Blanc * Adds blue form examples and #g hint It wasn't obvious how one had to do to generate tags not covered by current Form methods. This patch gives a hint on using Form#g to get a Gestalt instance back, and use it as usual. An example is added to illustrate this and show how to use additional arguments to set attibutes. [e017cbc | Sat May 12 15:53:42 UTC 2012] Michel Blanc * Fixes blue_form html doc tags and code syntax HTML tags referenced in the documentation were not escaped. Thus, when rendered as HTML, those tags weren't displayed properly in the browser. This patch escapes them as suggested by yorickpeterse. One of the examples wasn't syntactically correct, and had an extra do before the block. This is not removed and the example parses properly. [c6a332c | Sat May 12 13:32:54 UTC 2012] Michel Blanc * Fixes rendering of in-documentation html tag The

tag cited in documentation is not escaped by Yard. May be yard has an option to handle this, but for now this patch solves this by escaping < and > to html entities [f163277 | Sun Apr 29 00:16:58 UTC 2012] Diego Viola * more small fix/details [a9b32d0 | Sun Apr 29 00:05:19 UTC 2012] Diego Viola * use : only once for text [8cd6ed3 | Thu Apr 26 11:33:51 UTC 2012] Diego Viola * spell fix [d498217 | Wed Apr 25 21:33:26 UTC 2012] Diego Viola * fix spelling error [eab77b1 | Tue Apr 17 10:03:12 UTC 2012] Yorick Peterse * Custom titles for all static markdown files. Signed-off-by: Yorick Peterse [5df6b75 | Tue Apr 17 09:41:21 UTC 2012] Yorick Peterse * Fixed a minor formatting issue in controllers.md. Signed-off-by: Yorick Peterse [b672513 | Tue Apr 17 09:38:46 UTC 2012] Yorick Peterse * Described method parameters and routing. Signed-off-by: Yorick Peterse [f61d3da | Sat Apr 14 17:29:21 UTC 2012] Yorick Peterse * Ramaze 2012.04.14. Signed-off-by: Yorick Peterse [ced58a0 | Sat Apr 14 16:54:15 UTC 2012] Yorick Peterse * Sessions specs for Sequel, LRU and LocalMemCache. Signed-off-by: Yorick Peterse [27cab7f | Sat Apr 14 12:08:50 UTC 2012] Michael Fellinger * also make sure we use namespaced keys in cache_delete [487aee1 | Sat Apr 14 12:03:21 UTC 2012] Michael Fellinger * namespace keys in redis [28add0c | Sat Apr 14 12:00:12 UTC 2012] Michael Fellinger * only use default when value is nil [be0b31e | Sat Apr 14 11:56:07 UTC 2012] Michael Fellinger * speed up redis cache spec a bit [f419146 | Sat Apr 14 11:15:56 UTC 2012] Yorick Peterse * Encode session data when using Redis. The cache adapter Ramaze::Cache::Redis would store raw values opposed to encoding them using Marshal. This would make it impossible for this adapter to be used for sessions as session data is stored in a hash opposed to a simple string. Signed-off-by: Yorick Peterse [467b5b5 | Fri Apr 06 12:21:07 UTC 2012] Michel Blanc * Fixes typos in tutorial [da08072 | Tue Apr 03 19:24:42 UTC 2012] Yorick Peterse * Update for Cache::MemCache and Dalli 2. Dalli 2 deprecated the :compression option in favor of simply :compress. The code of Ramaze::Cache::MemCache has been updated to use the new option along with a minimum version of Dalli (2.0.2). This commit fixes #36. Signed-off-by: Yorick Peterse [97d5967 | Tue Apr 03 19:22:20 UTC 2012] Yorick Peterse * Updated the .gems file. Signed-off-by: Yorick Peterse [31bab37 | Fri Mar 23 15:20:25 UTC 2012] Yorick Peterse * Title update in the README. The title for testing Ramaze code was changed from "Testing with Ramaze" to simply "Testing Ramaze". Signed-off-by: Yorick Peterse [528ce2d | Thu Mar 22 19:27:24 UTC 2012] Yorick Peterse * Updated the special thanks page. Signed-off-by: Yorick Peterse [0b1537f | Thu Mar 22 19:24:57 UTC 2012] Yorick Peterse * Re-wrote and expanded the testing guide. Signed-off-by: Yorick Peterse [f45ad1f | Thu Mar 22 18:25:48 UTC 2012] Yorick Peterse * Use specific version numbers for the .gems file. Signed-off-by: Yorick Peterse [92b1f26 | Sat Mar 17 11:20:14 UTC 2012] Yorick Peterse * Fixed another typo in the README. Again thanks to dotbaiki for reporting it. Signed-off-by: Yorick Peterse [9bffef4 | Sat Mar 17 10:56:49 UTC 2012] Yorick Peterse * Fixed a typo, thanks dotbaiki for reporting it. Signed-off-by: Yorick Peterse [13a0945 | Mon Mar 12 17:37:58 UTC 2012] Yorick Peterse * Document the ability to customize the pager HTML. Signed-off-by: Yorick Peterse [510cb54 | Mon Mar 12 17:32:37 UTC 2012] Yorick Peterse * Removed some useless whitespace. Signed-off-by: Yorick Peterse [95abb19 | Sun Mar 11 19:24:21 UTC 2012] leucos * Added customization for css classes in the Paginate helper Signed-off-by: Yorick Peterse [b215063 | Mon Mar 12 08:28:00 UTC 2012] Yorick Peterse * Updated the .mailmap file. Signed-off-by: Yorick Peterse [64224c8 | Mon Mar 12 08:27:25 UTC 2012] Yorick Peterse * Updated the list of Gems in the .gems file. Signed-off-by: Yorick Peterse [6be53eb | Wed Mar 07 18:41:59 UTC 2012] Yorick Peterse * Release 2012.03.07. Signed-off-by: Yorick Peterse [aa5d48f | Mon Mar 05 19:08:01 UTC 2012] Yorick Peterse * Updated the list of authors and the changelog. Signed-off-by: Yorick Peterse [8040c21 | Mon Mar 05 19:04:17 UTC 2012] Yorick Peterse * Ramaze is now licensed under the MIT license. Signed-off-by: Yorick Peterse [b1e5d5c | Fri Mar 02 15:21:37 UTC 2012] John Pagonis * Explains how to reuse the existing middlewares stack with own middleware. Signed-off-by: Yorick Peterse [556597f | Fri Mar 02 12:41:53 UTC 2012] John Pagonis * Added a reference to the popular default Innate helpers to ramaze, to stop us wasting time looking for them. Signed-off-by: Yorick Peterse [df6bd77 | Fri Mar 02 11:01:37 UTC 2012] Yorick Peterse * Added a general Git workflow link. As suggested by @pagojo I've added a link to a guide that describes the various steps of contributing to Github projects. Issue: #33 Signed-off-by: Yorick Peterse [5ecdb93 | Thu Mar 01 19:05:56 UTC 2012] Yorick Peterse * Woops, YARD can't resolve to Ramaze.start. Signed-off-by: Yorick Peterse [3f6168a | Thu Mar 01 18:58:17 UTC 2012] Yorick Peterse * Expanded the sessions guide. It now includes a list of the available drivers (copied from the caching guide) as well as some instructions on how to change the adapter to use for session data. Signed-off-by: Yorick Peterse [7d5f8a0 | Thu Mar 01 18:48:42 UTC 2012] Yorick Peterse * Describe how to write/test documentation. Signed-off-by: Yorick Peterse [d8a3cc4 | Thu Mar 01 13:46:44 UTC 2012] Yorick Peterse * Small formatting changes for the middlewares guide See #33 Signed-off-by: Yorick Peterse [346a202 | Thu Mar 01 13:45:02 UTC 2012] Yorick Peterse * Removed trailing whitespace. See #33 for more information. Signed-off-by: Yorick Peterse [e125277 | Thu Mar 01 12:17:21 UTC 2012] John Pagonis * Clarified the middlewares documentation a bit. Signed-off-by: Yorick Peterse [5e9f80d | Wed Feb 29 20:12:54 UTC 2012] Yorick Peterse * Updated the list of authors. Signed-off-by: Yorick Peterse [cd11c7f | Mon Feb 20 20:45:12 UTC 2012] Yorick Peterse * Fixed the formatting of the User helper docs. See #32 for more information. Signed-off-by: Yorick Peterse [e9225b4 | Fri Feb 17 13:31:21 UTC 2012] John Pagonis * Corrected the user_login documentation. Signed-off-by: Yorick Peterse [846a4b3 | Thu Feb 16 19:22:14 UTC 2012] Yorick Peterse * Improved the docs for the User helper a bit. See #30 for more information. Signed-off-by: Yorick Peterse [2475a04 | Sat Feb 04 13:04:04 UTC 2012] Michael Fellinger * update travis config [4cfea2b | Wed Jan 25 14:35:19 UTC 2012] Yorick Peterse * Re-generate CSRF tokens for valid requests. Re-generating the CSRF tokens on each valid request fixes the annoying issue of the tokens *always* expiring after 15 minutes. This is very annoying if you're trying to edit some content and all of a sudden you're unable to submit a form as the token has expired. See #27 for more information. Signed-off-by: Yorick Peterse [2e98ff1 | Wed Jan 25 14:29:20 UTC 2012] Yorick Peterse * Removed a few more useless comments. Signed-off-by: Yorick Peterse [5cdc51c | Wed Jan 25 14:28:44 UTC 2012] Yorick Peterse * No need to brush my ego that much. Signed-off-by: Yorick Peterse [b24669f | Wed Jan 25 14:26:27 UTC 2012] Yorick Peterse * Removed some useless code. Signed-off-by: Yorick Peterse [e435ceb | Wed Jan 25 14:10:21 UTC 2012] Yorick Peterse * Use Ramaze.setup for the view adapters. Using Ramaze.setup() for installing and loading the gems required for various view adapters should make it easier for developers to get started as they no longer have to deal with errors related to certain Gems not being installed. Signed-off-by: Yorick Peterse [17c909e | Wed Jan 25 14:03:37 UTC 2012] Yorick Peterse * Added a few specifications for Slim. Signed-off-by: Yorick Peterse [969a02c | Wed Jan 25 13:42:20 UTC 2012] Yorick Peterse * Docs for the Slim engine and cleaned it up a bit. Signed-off-by: Yorick Peterse [023d6cd | Wed Jan 25 13:35:36 UTC 2012] Yorick Peterse * Removed a tab. Signed-off-by: Yorick Peterse [37f0f73 | Thu Jan 19 05:52:52 UTC 2012] Marc Weber * adding support for slim template engine thanks to yorickpeterse, manveru Signed-off-by: Yorick Peterse [561d528 | Tue Jan 17 18:23:19 UTC 2012] Yorick Peterse * Fixed a small statement bug in the blog example. This bug would cause an exception to be raised whenever a user would try to log in with invalid details. Thanks to MarcWeber for reporting the issue. Signed-off-by: Yorick Peterse [e8b3786 | Tue Jan 17 17:14:52 UTC 2012] Yorick Peterse * No need to boost my ego that much. Signed-off-by: Yorick Peterse [b33c13c | Tue Jan 17 17:04:10 UTC 2012] Michael Fellinger * fix some wikore bugs [fb84aea | Wed Dec 28 17:29:21 UTC 2011] Yorick Peterse * Release 2011.12.28 Signed-off-by: Yorick Peterse [4553e0b | Wed Dec 28 05:13:22 UTC 2011] Michael Fellinger * Wrap Rack::File so we can continue to use Rack::Cascade [f52f010 | Wed Dec 28 03:07:49 UTC 2011] Michael Fellinger * avoid shadow warning in controller [c64833c | Wed Dec 28 02:58:55 UTC 2011] Michael Fellinger * fix shadowed variables in Thread#into [4c66220 | Sat Dec 24 12:32:17 UTC 2011] Michael Fellinger * Update rvmrc to 1.9.3 and new convention [de1a871 | Sat Dec 24 12:33:11 UTC 2011] Yorick Peterse * Don't specify the exact amount of lines. Signed-off-by: Yorick Peterse [3b17e67 | Sat Dec 24 12:24:29 UTC 2011] Yorick Peterse * Set Ramaze.options.roots in the intro tutorial. Without this Ramaze won't be able to properly locate your root directories and thus will fail to load views, layouts, etc. Signed-off-by: Yorick Peterse [88c5a38 | Wed Nov 09 18:26:11 UTC 2011] Yorick Peterse * Use request.ip/request.host instead of request.env Using request.env['REMOTE_ADDR'] and request.env['REMOTE_HOST'] can break on certain environments (e.g. Heroku). Thanks to @stas for reporting the issue. Signed-off-by: Yorick Peterse [51c8d43 | Sun Oct 23 18:11:57 UTC 2011] Yorick Peterse * Minor style changes to the Flash documentation. Signed-off-by: Yorick Peterse [2877b07 | Sun Oct 23 17:03:50 UTC 2011] Yorick Peterse * Release 2011.10.23. Signed-off-by: Yorick Peterse [7c6cd3d | Sun Oct 23 17:01:27 UTC 2011] Yorick Peterse * Added Michael to the Email list for Travis. Signed-off-by: Yorick Peterse [8bcf6ca | Sun Oct 23 17:00:04 UTC 2011] Yorick Peterse * Removed jruby from the Travis list. It seems jruby is having some trouble on travis when trying to install the SQLite3 gem. While jruby itself runs Ramaze just fine I'm removing it from the list for the time being. Signed-off-by: Yorick Peterse [8d9d169 | Sun Oct 23 16:08:52 UTC 2011] Yorick Peterse * Updated the list of authors and the changelog. Signed-off-by: Yorick Peterse [73f2dbc | Fri Oct 21 21:14:49 UTC 2011] Yorick Peterse * Updated the list of authors and the changelog. Signed-off-by: Yorick Peterse [1eb0b71 | Fri Oct 21 20:48:48 UTC 2011] Yorick Peterse * RUBY_ENGINE isn't available on 1.8.7. Signed-off-by: Yorick Peterse [9727888 | Fri Oct 21 20:07:23 UTC 2011] Yorick Peterse * Fixed the remainder of all platform issues. Signed-off-by: Yorick Peterse [9c8fc8a | Fri Oct 21 19:04:48 UTC 2011] Yorick Peterse * Doh! Last commit broke ramaze start. Signed-off-by: Yorick Peterse [794e075 | Fri Oct 21 19:01:10 UTC 2011] Yorick Peterse * Jruby support and simplified various tests. In order to achieve jruby compatibility I had to make some modifications to the development dependencies setup we've been using for a while now. I added a list of unsupported gems (such as lokar) which will be "marked" as supported on certain systems. For example, lokar is only supported if the user isn't running Rubinius. Signed-off-by: Yorick Peterse [c6e328c | Fri Oct 21 17:24:13 UTC 2011] Yorick Peterse * Fixed more 1.8.7 issues. Hopefully this fixes all the remaining issues, though it wouldn't surprise me if ``gets()`` still doesn't work on Travis (sadly I can't reproduce this). Signed-off-by: Yorick Peterse [87d4ab6 | Fri Oct 21 17:12:36 UTC 2011] Yorick Peterse * Fixed a few issues with 1.8.7 Signed-off-by: Yorick Peterse [0d37c8e | Fri Oct 21 16:17:52 UTC 2011] Yorick Peterse * Platform checks and used FileUtils::RUBY directly. Signed-off-by: Yorick Peterse [e04f7f4 | Fri Oct 21 15:41:43 UTC 2011] Yorick Peterse * Fixed various issues with different Rubies. Signed-off-by: Yorick Peterse [33746a4 | Fri Oct 21 14:56:14 UTC 2011] Yorick Peterse * Test commit to see if Travis works Signed-off-by: Yorick Peterse [2faefd7 | Fri Oct 21 14:54:36 UTC 2011] Yorick Peterse * Updated the changelog Signed-off-by: Yorick Peterse [dee363c | Fri Oct 21 14:54:24 UTC 2011] Yorick Peterse * Added a Travis configuration file Signed-off-by: Yorick Peterse [dfb8ca8 | Fri Oct 21 14:01:40 UTC 2011] Yorick Peterse * Updated the AUTHORS file for the upcoming release. Signed-off-by: Yorick Peterse [4aa9706 | Sat Oct 15 13:15:33 UTC 2011] Yorick Peterse * Added a chapter on contributing to Ramaze Signed-off-by: Yorick Peterse [156e902 | Fri Oct 14 20:35:52 UTC 2011] Yorick Peterse * Added a list of guide contributors. Signed-off-by: Yorick Peterse [4c7996e | Fri Oct 14 20:30:27 UTC 2011] Yorick Peterse * Style changes to the Testing chapter. Besides these style changes I've also expanded the chapter a bit. Signed-off-by: Yorick Peterse [0c6e4e3 | Fri Oct 14 20:15:33 UTC 2011] Stas SUȘCOV * Added a short guide for testing ramaze apps (with simplecov too) [7c7a2a6 | Fri Oct 14 19:35:17 UTC 2011] Stas SUȘCOV * Added flashbox trait details. [791758e | Fri Oct 14 19:28:24 UTC 2011] Stas SUȘCOV * Updated flash usage details. [f2f9347 | Thu Oct 13 17:59:12 UTC 2011] Yorick Peterse * Updated various files. Signed-off-by: Yorick Peterse [be1b000 | Thu Oct 13 17:24:31 UTC 2011] Yorick Peterse * Updated the YARD task to include Innate. The Rake task ``yard`` can now optionally include Innate when a valid path is specified. Signed-off-by: Yorick Peterse [2dac2cd | Thu Oct 13 17:05:24 UTC 2011] Yorick Peterse * Cache examples and documented RotatingInformer. Signed-off-by: Yorick Peterse [a8174d2 | Thu Oct 13 16:23:15 UTC 2011] Yorick Peterse * Autoload Growl/RotatinInformer Signed-off-by: Yorick Peterse [8853778 | Thu Oct 13 13:33:29 UTC 2011] Yorick Peterse * Documented logging and creating custom loggers Signed-off-by: Yorick Peterse [e9567e7 | Thu Oct 13 10:34:02 UTC 2011] Yorick Peterse * Updated the Special thanks and fixed a typo. I added Loren Segal to the Special Thanks page, without him we wouldn't be using YARD. Also fixed a spelling error in the README reported by huma. Signed-off-by: Yorick Peterse [3228a6d | Thu Oct 13 09:00:10 UTC 2011] Yorick Peterse * Removed the old README Signed-off-by: Yorick Peterse [830d599 | Thu Oct 13 08:57:14 UTC 2011] Yorick Peterse * Moved some chapters around. The chapters on helpers and logging data have been moved to their own file instead of being displayed in the README. Next up is writing the actual documentation on logging data. Signed-off-by: Yorick Peterse [4c8d0d2 | Wed Oct 12 22:48:02 UTC 2011] Yorick Peterse * Initial setup for the YARD based user guide. Signed-off-by: Yorick Peterse [8ee60cd | Mon Oct 10 19:20:12 UTC 2011] Yorick Peterse * Fixed an HTML validation error. The index.html view in the prototype contained a link that wasn't formatted according to the HTML specification. Thanks to "stu314" from the IRC channel for reporting it and submitting the patch. Signed-off-by: Yorick Peterse [7973c39 | Sun Oct 09 11:37:25 UTC 2011] Yorick Peterse * Docs/style changes for the Redis cache. The Redis cache has been documented and I've made some slight modifications to it so that it works similar to the Sequel/Memcache cache in terms of setting options. I've also modified the Sequel, Memcache and Redis cache classes to use Ramaze.setup() for their dependencies, this should make it a bit easier for users to use these caches. Signed-off-by: Yorick Peterse [b9f5501 | Sun Oct 09 08:55:58 UTC 2011] Michael Fellinger * Add redis cache [a077d54 | Tue Sep 27 21:25:14 UTC 2011] Yorick Peterse * Removed the spec/ directory. Signed-off-by: Yorick Peterse [e5efe43 | Tue Sep 27 21:23:51 UTC 2011] Yorick Peterse * Renamed Post.rb to post.rb. Signed-off-by: Yorick Peterse [a127ef0 | Tue Sep 27 21:23:34 UTC 2011] Yorick Peterse * Silly OS X and it's file casing. Next commit will contain the correct name. Signed-off-by: Yorick Peterse [dc2770f | Tue Sep 27 21:18:37 UTC 2011] Yorick Peterse * Boom! A new blog example application. Signed-off-by: Yorick Peterse [1cd6174 | Mon Sep 26 21:47:10 UTC 2011] Yorick Peterse * Started re-writing the blog example. Signed-off-by: Yorick Peterse [02c442e | Sat Sep 03 17:43:40 UTC 2011] Francesc Esplugas * Detect also :mustache extension when using Ramaze::View::Mustache. [68fdea6 | Fri Sep 02 16:54:12 UTC 2011] YorickPeterse * Modified the Upload helper so that it's less restrictive regarding various types. [506e9d9 | Thu Sep 01 22:08:09 UTC 2011] YorickPeterse * Ditched `rake rcov` and told Dalli to bother somebody else with it's logger. [61760cd | Thu Sep 01 16:07:02 UTC 2011] YorickPeterse * Deprecated ramaze/spec as was supposed to happen two years ago. The code in it has been moved to ramaze/spec/bacon. ramaze/spec now always generates a warning until I'm 100% sure it's not used by Ramaze itself anymore. [18bf4b5 | Thu Sep 01 15:12:43 UTC 2011] YorickPeterse * rake bacon now shows the spec paths relative to the project root. [27a3245 | Thu Sep 01 10:49:17 UTC 2011] YorickPeterse * Added more specs for the Upload helper. [342ea4d | Wed Aug 31 23:10:49 UTC 2011] YorickPeterse * Started writing a set of specifications for the Upload helper. [703a69c | Wed Aug 31 22:15:33 UTC 2011] YorickPeterse * Moved some of the docs of the Upload helper to the module declaration instead of [31550b9 | Wed Aug 31 21:54:18 UTC 2011] YorickPeterse * Cleaned up some of the code in the Upload helper and removed the need for a [93850ae | Mon Aug 22 11:48:54 UTC 2011] Lars Olsson * UploadHelper: Doh! Don't exit function prematurely. Fixes bug introduced by 88ded566950e15a13fb0526e9cb1c8544b91aa2f. [c8a71ac | Mon Aug 22 11:19:27 UTC 2011] Lars Olsson * UploadHelper: Doc fixes [88ded56 | Sun Aug 21 10:40:11 UTC 2011] Lars Olsson * UploadHelper: Document using YARD instead of RDoc, let get_uploaded_files return the number of converted file uploads [2ba5aa4 | Sat Aug 20 09:44:09 UTC 2011] YorickPeterse * Updated Ramaze.setup so that it works with recent Rubygems versions and Most of the credits for fixing Ramaze.setup go to @injekt as he initially submitted the code, I just made it work with previous Rubygems installations. [ebb6a3f | Fri Aug 19 20:44:36 UTC 2011] Lars Olsson * UploadHelper: Minor doc fixes [701f75c | Thu Aug 18 20:48:50 UTC 2011] Lars Olsson * UploadHelper: Handle array parameters, add more docs [51e88dc | Thu Aug 18 17:07:12 UTC 2011] Lars Olsson * UploadHelper: Allow proc in addition to string for default_upload_dir parameter [6b8c45a | Tue Aug 16 10:18:47 UTC 2011] Lars Olsson * Fixed minor bugs, added lots of docs for UploadHelper [e58d99a | Mon Aug 15 14:46:22 UTC 2011] Lars Olsson * Be compatible with ruby 1.8 [7bbb724 | Mon Aug 15 09:49:13 UTC 2011] Lars Olsson * Minor refactoring of save method, add accessors and saved? method to Ramaze::UploadedFile class [3b938b8 | Sun Aug 14 17:40:33 UTC 2011] Lars Olsson * Use copy_stream method for saving file, add unlinking option for tempfile, reformat source code to keep line length within reasonable limits [05cc35a | Wed Aug 10 06:52:17 UTC 2011] YorickPeterse * Modified the layout helper so that it no longer overwrites layout(). Do note that this change has a minor limitation: it will only create a "backup" of the existing layout (located in a trait called :layout) the first time set_layout() is called. After this it will just use the one that was set in the first call. This means that you can do the following and it would just work fine: layout :default set_layout :alternative => [:method_1] This would result in the layout "default" being use by default and the layout "alternative" being used for method_1(). Before this commit this would result in all methods except method_1() being rendered *without* a layout at all. In the following example both calls to set_layout() will use the layout set by layout() as a backup, the second one will not overwrite it but instead will also use the backup: layout :default set_layout :alternative => [:method_1] set_layout :another_one => [:method_2] To cut a long story short, existing layouts are now properly used as a fallback in case set_layout() doesn't result in any matching layouts for a particular method. [14d277d | Tue Aug 09 07:50:12 UTC 2011] YorickPeterse * Removed ramaze/rest. It was extremely crippled and didn't work properly anyway. I tried coming up with a nice helper to replace this but I eventually decided not to include it since there are multiple ways of doing it. [7503d78 | Mon Aug 08 18:28:04 UTC 2011] Lars Olsson * Implement save method, use traits instead of constants, add options for default upload dir, autosave and overwriting existing files. [9dda5cf | Mon Aug 08 07:10:36 UTC 2011] Lars Olsson * Remove instance variable, use singleton method to keep track of uploaded files instead [9f7b920 | Fri Aug 05 10:07:01 UTC 2011] Lars Olsson * Add some docs, fix indentation [5c693d9 | Thu Aug 04 21:52:46 UTC 2011] Lars Olsson * Initial support for upload helper [558afb7 | Wed Jul 27 20:23:23 UTC 2011] YorickPeterse * Updated the config.ru for the prototype so that it respects your root directories. [b82571a | Tue Jul 26 07:24:58 UTC 2011] YorickPeterse * BlueForm#input_checkbox now takes a hash, array or string as the checked value. Sadly I only discovered this this morning so this will have to wait until the next release. This small change makes it possible to do the following: f.input_checkbox( 'Language', :language, ['ruby'], :values => ['ruby', 'python'] ) Previously you could only check a single checkbox (and radio button). [8cd0b4b | Mon Jul 25 20:06:07 UTC 2011] YorickPeterse * Release 2011.07.25. [cfc6c2b | Mon Jul 25 17:56:49 UTC 2011] YorickPeterse * Updated the changelog and the list of contributors. [3e3b227 | Mon Jul 25 17:52:10 UTC 2011] YorickPeterse * Fixed an issue with Ramaze::Bin::Status and not enough arguments being set. [5e4de59 | Mon Jul 25 17:43:54 UTC 2011] YorickPeterse * The spec for Ramaze::Bin::Start now uses it's own app rather than the prototype. This change makes it possible to run the specification for Ramaze::Bin::Start on systems that do not have a version of Ramaze installed as a Gem. [efcf09c | Mon Jul 25 17:33:08 UTC 2011] YorickPeterse * Cleaned up some code and fixed the Sass specification. [3f3280c | Mon Jul 25 17:29:11 UTC 2011] YorickPeterse * Fixed the last broken specification, this fixes #14. Apparently ETags (or maybe all headers) aren't purged in a new call to get(). I'm not sure if this is an issue with Rack, Rack::Test or Ramaze but manually setting the IF_NONE_MATCH header to nil fixed the issue. [7427ba2 | Mon Jul 25 08:38:46 UTC 2011] YorickPeterse * Aligned the code in the BlueForm helper to 80 columns and removed the use of [bd16507 | Sat Jul 23 00:32:59 UTC 2011] YorickPeterse * Fixed the Ramaze::Helper::Auth specification and removed Ramaze::View::Less. The view driver for Less has been removed as recent versions of Less rely on Node.js and it seems the newer versions don't really play well with string based parsing without having to invoke Less from the command line. [3674601 | Fri Jul 22 23:37:28 UTC 2011] YorickPeterse * Removed the code for the old executable. [706d334 | Fri Jul 22 23:00:27 UTC 2011] YorickPeterse * Added a set of Bacon specifications for Ramaze::Bin::Create and [6cbd510 | Fri Jul 22 17:15:20 UTC 2011] YorickPeterse * Began speccing the executables. Ramaze::Bin::Runner has been specced and I the best way of test these semi interactive commands. [cd9fa64 | Thu Jul 21 22:29:00 UTC 2011] YorickPeterse * Gave the Ramaze executable the much needed love. A few things have changed to the executable so far. The biggest change is that rather than using regular expressions to "parse" all given options it now uses OptionParser. This comes with the added advantage of making it easy to set banners, options, running commands and so on. Another big change is that rather than dumping most of the code in a single file each command is located in it's own file making it easier to maintain them. Most of the code in this commit is still backwards compatible and should still work on Windows based system (since I just used the code written by @bougyman for that). There are however a few minor changes. Because OptionParser is used the output displayed when specifying -h or --help has changed, this however is a good thing as the output now follows the Unix standards of command line executables. Another thing that has changed in terms of command behavior is that most commands related to managing applications either accept a directory or a file. For example, the command $ ramaze start now allows you to specify a directory (or file) that points to the location of a Rackup configuration file. This is actually quite useful as it makes it possible to run the ramaze executable from any given location. In order to make it easier to spec the executable and it's commands (I have yet to begin working on this) I decided to manually specify all the possible Rack and Ruby options the command Ramaze::Bin::Start accepts. Before this commit these were extracted by parsing the output of rackup -h, this however proved to be quite annoying as with every change of this output our specs would break (even if it would be something simple such as newlines being removed). A few examples of the new executable setup: $ ramaze start $ ramaze start /home/someuser/ramaze/ $ ramaze start /home/someuser/ramaze/config.ru Debugging using IRB: $ ramaze console $ ramaze console /home/someuser/ramaze $ ramaze console /home/someuser/ramaze/start.rb Or perhaps viewing the status of an application: $ ramaze status $ ramaze status /home/someuser/ramaze -P /home/someuser/ramaze/ramaze.pid For more information see the files located in lib/ramaze/bin, the old files located in lib/ramaze/tool will be removed in the next commit. [241c233 | Wed Jul 20 20:56:02 UTC 2011] YorickPeterse * Updated the .mailmap file so that my Email addresses are displayed correctly. [522302b | Wed Jul 20 20:30:33 UTC 2011] YorickPeterse * Updated the minimum version numbers for all the development dependencies and that it checks to see if Growl is running. [7febd27 | Wed Jul 20 19:41:23 UTC 2011] YorickPeterse * rake gem:build now creates the pkg/ directory if it doesn't exist. [a9ac54c | Wed Jul 20 19:29:15 UTC 2011] YorickPeterse * Documented, re-wrapped and cleaned up a lot of files. Also removed [4d22079 | Wed Jul 20 17:57:49 UTC 2011] YorickPeterse * Documented a few more files and removed all trailing whitespace in several [6e470ed | Wed Jul 20 17:33:34 UTC 2011] YorickPeterse * Documented Ramaze::App, Ramaze::Cache and Ramaze::Controller. [bb6e857 | Wed Jul 20 10:03:10 UTC 2011] Pistos * Rake task aliases: :test and :spec (go to :bacon). [56fa0c7 | Wed Jul 20 15:47:14 UTC 2011] YorickPeterse * Second commit of the series. In this commit I removed the benchmark/ directory The benchmark/ directory was removed as I personally feel benchmarks should be done by a third-party that has an unbiased opinion of Ramaze, on top of that I doubt if most code in the benchmark still applies to today's Ramaze. The building/installing process has also been finished. Building a gemspec is no longer possible (as it's not needed) but building an actual gem file and releasing it is still possible. Building a gem file can be done as following: $ rake gem:build $ rake gem:install Releasing a version of Ramaze on Rubygems can be done as following: $ rake release [f511186 | Wed Jul 20 15:32:36 UTC 2011] YorickPeterse * The changes in this commit are the first set of changes to make developing idea of others such as @manveru so feel free to discuss them. First of all the Gemspec generation process has been changed. Rather than using a Rake task to build/update the Gemspec Ramaze now has it's own manually created Gemspec. The dependencies of this Gemspec are specified in Ramaze::DEPENDENCIES and Ramaze::DEVELOPMENT_DEPENDENCIES, these files are also used for the setup task. Second I've removed several Rake tasks that appeared to be useless or did not fit the idea of Ramaze (the jQuery task). I've also removed the Git tasks and some other tasks that did not add anything useful to the development process. If any of these changes do not meet any particular standards or ideas feel free to discuss them but note that this is the first commit of a series so things might change a bit after this commit has been pushed. [1e5bdb3 | Wed Jul 20 08:37:06 UTC 2011] Michael Fellinger * Don't store the user object of the user helper in the session, it might not be possible to marshal [41fd9e0 | Mon Jul 04 20:07:17 UTC 2011] Masahiro Nakagawa * Fix mustache-view for latest Mustache. Latest Mustache changed escaping algorithm. New escaping algorithm provides overridable 'escapeHTML' method. So, I create RamazeContext for overriding 'escapeHTML'. [34a118a | Sat Jul 02 18:08:23 UTC 2011] YorickPeterse * Fixed the spec for the Ramaze executable. It's a bit of a dirty fix but it works changes. [96aad6e | Sat Jul 02 17:45:21 UTC 2011] YorickPeterse * Fixed the Memcached session spec and cleaned up some code. I also looked showing a "You are being redirected..." messages rather than actually redirecting the request. It's probably something easy but I could not find anything in the Rack changelog, the commits or the source. This issue does not occur when using Rack < 1.3. [9e97b76 | Sun Jun 26 23:22:23 UTC 2011] Michael Fellinger * Avoid creating a new sid every time the user helper is invoked [d33a6ed | Thu Jun 23 10:24:14 UTC 2011] Michael Fellinger * Remove the httpdigest helper, it's been broken long enough, please use Rack::Auth instead [a1fc4fe | Thu Jun 23 10:06:15 UTC 2011] Michael Fellinger * Refactor a bit of the csrf helper [fdfaf9a | Thu Jun 23 09:42:52 UTC 2011] Michael Fellinger * Fix some style issues in csrf [da6717d | Thu Jun 16 20:10:20 UTC 2011] YorickPeterse * Added a spec for Ramaze::Helper::Email. Also ensured that the specs only such. [eee917c | Thu Jun 16 17:44:20 UTC 2011] YorickPeterse * Migrated the Email contribution to Ramaze::Helper::Email and re-wrote [19e2bd1 | Thu Jun 16 09:47:04 UTC 2011] YorickPeterse * Nuked the contrib directory. REST is moved to lib/ramaze and so is the coming commits. [7449a75 | Wed Jun 15 08:44:12 UTC 2011] YorickPeterse * Checkboxes and radio buttons in the BlueForm helper now have the ability setting the options :show_value and :show_label to false (these are set to true by default). This fixes #10. [7137a75 | Wed Jun 15 07:42:20 UTC 2011] YorickPeterse * Updated the prototype generated by bin/ramaze create. It no longer points that I also removed the jquery.js file. First of all this isn't minified so not very useful for production environments and second it somewhat goes against the idea of non opinionated software. This fixes #9. [39f206e | Sat Jun 04 16:14:24 UTC 2011] Lee Jarvis * use Gem::Specification#activate over deprecated Gem.activate [29994bf | Sat Jun 04 15:59:12 UTC 2011] Lee Jarvis * remove call to has_rdoc in the gemspec [21e8ae0 | Sat Jun 04 15:58:59 UTC 2011] Lee Jarvis * remove some defaults from the gemspec [1064242 | Sat Jun 04 03:47:15 UTC 2011] huma * Fix for relative paths on 1.9 [4262294 | Thu Jun 02 11:45:36 UTC 2011] Michael Fellinger * Add dalli, use newer erector to avoid hoe issues [28c7d9e | Wed Jun 01 23:58:08 UTC 2011] YorickPeterse * Modified the Rakefile so that it also uses Dalli instead of the Memcache Client gem. [b032593 | Wed Jun 01 23:17:50 UTC 2011] Michael Fellinger * Remove reference to rubyforge project [405b9c0 | Wed Jun 01 23:17:34 UTC 2011] Michael Fellinger * Remove rubyforge release task [24d20b7 | Wed Jun 01 23:17:10 UTC 2011] Michael Fellinger * Remove outdated documentation for setup [5a93327 | Wed Jun 01 23:16:35 UTC 2011] Michael Fellinger * Remove broken sourceview example app [9e86f5c | Sun May 29 04:56:12 UTC 2011] Jason Torres * Fix escape': can't convert Pathname to String (TypeError) [663ca87 | Wed May 18 22:09:32 UTC 2011] YorickPeterse * Documented Ramaze.setup and Ramaze::GemSetup and removed GitHub as a source as they [a8c1d16 | Wed May 04 17:46:02 UTC 2011] YorickPeterse * Updated the Gemspec so that it specifies Dalli instead of Memcache client. [676685a | Wed May 04 14:53:49 UTC 2011] YorickPeterse * Installation details are already covered in the README and in the user guide, no need to explain it a third time. [3582f30 | Wed May 04 14:47:40 UTC 2011] YorickPeterse * Oh hey look at that, it's 2011 already\! [e3819ca | Wed May 04 14:44:23 UTC 2011] YorickPeterse * Modified Ramaze::Cache::Sequel so that it's using() method actually does [df83100 | Wed May 04 11:05:50 UTC 2011] YorickPeterse * Seems all bugs in the Memcache driver are now gone. [487854c | Wed May 04 10:58:47 UTC 2011] YorickPeterse * Dalli::Client doesn't respond to [] but instead uses get(). [8a2eedd | Wed May 04 10:55:03 UTC 2011] YorickPeterse * Modified the Memcache driver so that you can use it both with and without the using() method. [1ec3521 | Wed May 04 10:51:21 UTC 2011] YorickPeterse * Don't merge when it's nil. [9176fca | Wed May 04 16:25:09 UTC 2011] Michael Fellinger * Fix memcached cache [016b2d2 | Wed May 04 09:11:37 UTC 2011] YorickPeterse * Rewrote most of Ramaze::Cache::MemCache now that memcache-client is performance boost. The only thing left to do is to get Ramaze::Cache::MemCache.using() to work properly similar to how Ramaze::Cache::Sequel does it. [240bd55 | Wed Apr 27 06:35:46 UTC 2011] Michael Fellinger * Avoid failure in User helper when callback is given but no model exists [48e8987 | Thu Apr 21 17:58:18 UTC 2011] YorickPeterse * Fixed the issue reported by Lars Olssen here: https://groups.google.com/d/msg/ramaze/kWO8u5NrA-c/rtNEFgZo2w8J [704bd2c | Tue Apr 19 09:32:56 UTC 2011] YorickPeterse * Replaced the configuration system added by Lars with traits and removed the dependency on [c5587c0 | Mon Apr 18 21:30:47 UTC 2011] YorickPeterse * Added the awesome patch to Ramaze::Cache::Sequel added by Lars Olsson. While I cleaned up something so it would be cool if @manveru could take a better look at it. An example of using the new Sequel cache works like the following: Ramaze.options.cache.session = Ramaze::Cache::Sequel.using( :connection => Sequel.mysql( :host => 'localhost', :user => 'user', :password => 'password', :database => 'blog' ), :table => :blog_sessions ) For more information on this patch read the following thread on the mailing list: https://groups.google.com/d/topic/ramaze/kWO8u5NrA-c/discussion [bc9dcbf | Sun Apr 10 17:53:49 UTC 2011] Michael Fellinger * Fix Double ETag issue [b343f76 | Thu Apr 07 08:25:45 UTC 2011] Michael Fellinger * Clean layout helper a bit [0dc06dd | Wed Apr 06 20:59:18 UTC 2011] YorickPeterse * "methods" is a reserved method name, renamed it to "layout_methods" instead. [0d15a29 | Wed Apr 06 20:53:24 UTC 2011] YorickPeterse * Modified the helper Ramaze::Helper::Layout so that it allows you to call set_layout multiple times as well as setting layouts for multiple methods. A good example is the following: set_layout 'my_layout' => [:index, :edit] set_layout 'default' => [:add] Please note that Ramaze::Helper::Layout#set_layout_except is deprecated and will issue a warning, you should use set_layout instead. [4a8c10e | Fri Apr 01 18:01:00 UTC 2011] YorickPeterse * Modified Ramaze::Log::RotatingInformer so that it can be used by Rack::CommonLogger. [e5b63df | Sat Mar 26 13:56:11 UTC 2011] Michael Fellinger * Fix BlueForm fieldset method [cf609fc | Sat Mar 26 13:55:58 UTC 2011] Michael Fellinger * Fix trailing whitespace [702c8f5 | Sun Mar 20 20:59:28 UTC 2011] YorickPeterse * Updated the version of Innate required by Ramaze. [7efcd7d | Thu Mar 03 12:22:33 UTC 2011] Bruno Rohée * Typo fix : inhert -> inherit [88e4b4f | Wed Mar 02 19:04:09 UTC 2011] YorickPeterse * Removed several outdated files that no longer applied to today's Ramaze. [fed1a4b | Fri Feb 04 15:22:55 UTC 2011] YorickPeterse * Gave the good ol' README a spanking new update. [1635b50 | Fri Feb 04 15:02:37 UTC 2011] YorickPeterse * Updated the TODO [3902328 | Sun Jan 30 10:45:39 UTC 2011] Michael Fellinger * Version 2011.01.30 [ca1cd40 | Sun Jan 30 10:45:08 UTC 2011] Michael Fellinger * Work around differences between Rack 1.2.1 and git HEAD [38f29f8 | Wed Jan 26 14:13:42 UTC 2011] Michael Fellinger * Version 2011.01 [21fda98 | Sat Jan 15 22:42:58 UTC 2011] YorickPeterse * Removed 'Sequel' and 'Authentication' from the Todo. [f85d2b0 | Fri Jan 14 10:49:39 UTC 2011] YorickPeterse * Added a new item about the User helper to the todo [aea1597 | Fri Jan 14 13:28:31 UTC 2011] Michael Fellinger * Make installation of ruby-growl precondition for growl spec [5cdbe88 | Fri Jan 14 13:23:36 UTC 2011] Michael Fellinger * Adjust spec for ramaze -? flag [acad7d9 | Thu Jan 13 23:14:39 UTC 2011] YorickPeterse * Fixed the removal of cache items in the Sequel cache and added a TODO list. [908d36f | Thu Jan 06 23:14:22 UTC 2011] YorickPeterse * The Growl logger didn't seem to include Ramaze::Logging and therefore would break in certain situations. [371bba9 | Thu Jan 06 15:35:03 UTC 2011] YorickPeterse * Resolved a few issues in the Growl logger and added a basic Bacon spec for it for future testing. [a96af85 | Tue Jan 04 15:42:46 UTC 2011] Michael Fellinger * Open the file for send_file, don't read everything into memory [5743449 | Tue Dec 21 09:14:15 UTC 2010] YorickPeterse * BlueForm helper/spec modification to allow selecting of multiple values when creating a multi select box. [5b6c942 | Mon Dec 20 20:24:13 UTC 2010] YorickPeterse * Small modification to the BlueForm helper that sets the size based on the amount of items. [a874c9c | Mon Dec 20 09:13:12 UTC 2010] YorickPeterse * Modified the 'size' argument in select boxes to no longer use the 'multiple' argument as it was bugged. [ddaead1 | Mon Dec 13 17:39:45 UTC 2010] Michael Fellinger * Fix ETag issues [77251e2 | Mon Dec 06 12:06:11 UTC 2010] YorickPeterse * Fixed a bug in the BlueForm helper when loading error messages stored as an array from the flash (e.g. error messages generated by Sequel). [f93380a | Sun Dec 05 18:15:02 UTC 2010] YorickPeterse * Added an extra spec to the BlueForm spec to test if retrieving errors from models works. [b5b67a5 | Sun Dec 05 01:22:41 UTC 2010] YorickPeterse * Tiny fix in the BlueForm helper related to type mismatch errors. [2a9cb29 | Sun Dec 05 01:05:02 UTC 2010] YorickPeterse * Fixed a bug in the Sequel cache that would cause it to recreate the session data over and over again. The error was caused because the cache was using a varchar(255) for it's value field, rather than a text field. IMPORTANT: recreate your session table or update the field yourself (change it to "text"). [872c41c | Sat Dec 04 15:53:32 UTC 2010] YorickPeterse * Removed some old code from the CSRF helper that would trigger errors in certain cases. [6f93490 | Mon Nov 29 23:35:29 UTC 2010] Lee Jarvis * fixed proto model require comment for 1.9.2> compatibility [070fb79 | Sun Nov 21 19:20:30 UTC 2010] YorickPeterse * Fixed a bug that would prevent the use of items that couldn't be used in a loop (strings, fixnums, etc). [2d00de0 | Sun Nov 21 18:51:53 UTC 2010] YorickPeterse * Modified the BlueForm helper so that it supports checkboxes/radio buttons using a hash again. See the source documentation and specs for more details. [547367f | Fri Nov 19 19:42:36 UTC 2010] YorickPeterse * Renamed Ramaze::Helper::BlueForm.form() to form_for() to prevent name collisions. [32f4fc5 | Thu Nov 18 09:25:12 UTC 2010] YorickPeterse * Modified the CSRF helper in such a way that it supports any given HTTP request and that it can no longer be bypassed using a GET request. Do note that these changes modified the way the helper works so be sure to read the docs/specs. [62e04cc | Wed Nov 17 19:25:42 UTC 2010] YorickPeterse * Angry nerds, be gone! In other words, Ramaze now has an anti-CSRF helper. [c09cf6c | Sun Nov 14 15:52:07 UTC 2010] YorickPeterse * Added some extra documentation to the BlueForm helper and fixed some Yard issues in the Erector view adapter. [ba61f02 | Sat Nov 13 21:10:23 UTC 2010] YorickPeterse * Updated the BlueForm helper to enable the use of objects for form values, much like Rails' form_for method. See the specs and docs for more information. [fd8cfd8 | Fri Nov 12 21:22:39 UTC 2010] YorickPeterse * Updated the localmemcache spec to flunk instead of failing on Mac OS X. [9b5359e | Thu Nov 11 20:33:03 UTC 2010] YorickPeterse * I R IN YOUR CODEZ, FIXIN' YOUR BUGZ [3308753 | Wed Oct 27 14:03:28 UTC 2010] YorickPeterse * Localmemcache spec/gem will be ignored on OS X since they don't work on that platform. [3b360f4 | Wed Oct 27 20:50:49 UTC 2010] Michael Fellinger * Form helper is not needed in todolist example [bdab117 | Thu Oct 21 11:26:39 UTC 2010] YorickPeterse * Finished working on the Erector adapter. Helper methods can now be called by using the instance variable "@controller". It may not be the cleanest way but it works. See the docs in lib/ramaze/view/erector.rb for more details. [054b1bf | Thu Oct 21 09:21:11 UTC 2010] YorickPeterse * Lots of changes: - Updated Manifest and the README - Completely rewrote the Erector adapter. For now helper methods and such don't work. - Added Bacon tests for the new Erector [bd97544 | Mon Oct 18 09:57:00 UTC 2010] YorickPeterse * Removed the Nitro form example and the form/sequel_form specs. [bf3ac5a | Sat Oct 16 23:35:32 UTC 2010] YorickPeterse * Updated the MANIFEST file and updated a lot of comment blocks to the YARD format. [5c0d0d7 | Fri Oct 15 22:46:52 UTC 2010] YorickPeterse * The following changes have been made: - The Form, Sequel Form and Nitro form helpers have been removed in favour of the BlueForm helper. - Added documentation to all helpers that were lacking this except the localization helper since I couldn't quite figure out how it works. [4604657 | Fri Oct 15 16:00:23 UTC 2010] YorickPeterse * Made the following changes to the BlueForm helper and it's Bacon spec: - Classes are no longer added by default since they couldn't be changed by the user. - Added the ability to customize optional HTML attributes to several methods. - Bacon spec has been updated to work with all the changes. [e26364c | Fri Oct 15 14:54:02 UTC 2010] YorickPeterse * Started documenting as many helpers as I can. The first one is the BlueForm helper. [bd90820 | Fri Oct 15 16:23:12 UTC 2010] Michael Fellinger * Remove cruft from blue_form spec [94c0175 | Thu Oct 14 22:03:41 UTC 2010] Lee Jarvis * updated documentation for flash helper [b37540a | Thu Oct 14 21:52:41 UTC 2010] Lee Jarvis * added optional :prefix option to #css and #js xhtml helper methods This option allows a user to specify the relative location of a css or js file, defaulting back to 'css' and 'js' respectively. ie css('foo', :prefix => 'stylesheets') #=> [d9eadf2 | Thu Oct 14 21:15:20 UTC 2010] Lee Jarvis * updated git refs [507bea6 | Thu Oct 14 21:15:08 UTC 2010] Lee Jarvis * added redcar project dir to gitignore [614e784 | Thu Oct 14 21:03:42 UTC 2010] Lee Jarvis * updated manifest [da8fea8 | Thu Oct 14 21:02:03 UTC 2010] Lee Jarvis * removed vendor version of Rack::ETag since this was imported into [49d1e7f | Sat Sep 18 15:58:05 UTC 2010] Michael Fellinger * Resid the session when logging in with the UserHelper [36c4637 | Tue Sep 07 16:14:01 UTC 2010] Michael Fellinger * Update some references to new git repo [9341530 | Mon Aug 30 12:11:46 UTC 2010] Michael Fellinger * Add missing dependencies to blog example [3ebcb2a | Tue Sep 07 06:54:22 UTC 2010] Lee Jarvis * updated proto [9a1ff30 | Tue Sep 07 06:47:26 UTC 2010] Lee Jarvis * various doc updates [2c7f9e3 | Tue Sep 07 06:33:34 UTC 2010] Lee Jarvis * updated documentation link for Userhelper#user [2e15842 | Tue Sep 07 06:28:51 UTC 2010] Lee Jarvis * added extra formatting to README this makes headings/sections work well with yards new table of contents menu [90349af | Tue Sep 07 06:25:56 UTC 2010] Lee Jarvis * clear up some README formatting [855938c | Mon Sep 06 13:13:15 UTC 2010] Lee Jarvis * renamed user helper to resolve namespace conflict [b1e2a00 | Fri Aug 20 21:20:07 UTC 2010] Lee Jarvis * added send_file helper from innate [bb16255 | Fri Aug 20 22:31:52 UTC 2010] Michael Fellinger * Fix ramaze console for 1.9.2 [4304479 | Thu Aug 12 14:21:14 UTC 2010] Lee Jarvis * removed pager spec [c1cbd41 | Thu Aug 12 14:14:04 UTC 2010] Lee Jarvis * removed deprecated partial helper [1a0fc06 | Thu Aug 12 13:59:26 UTC 2010] Lee Jarvis * removed pager helper [c179125 | Thu Aug 12 13:58:47 UTC 2010] Lee Jarvis * removed sequel (paginate) helper [133cb41 | Wed Jul 21 11:17:37 UTC 2010] injekt * entire sounds cheesy, latest source code! [4bcdbac | Wed Jul 21 11:16:28 UTC 2010] injekt * added tarball direct link [5a6fcfd | Wed Jul 21 11:14:41 UTC 2010] injekt * updated readme [0d92619 | Wed Jul 21 11:00:39 UTC 2010] injekt * fixed spelling error [f8a4f90 | Wed Jul 21 10:56:13 UTC 2010] injekt * informer spec requires stringio [f9b9fff | Sat Jul 03 19:44:28 UTC 2010] Esad Hajdarevic * Add shebang to proto/start.rb and +x to make it executable via ./start.rb [11c7373 | Thu Jun 17 22:42:10 UTC 2010] Michael Fellinger * Version 2010.06.18 [8c86f88 | Thu Jun 17 22:41:50 UTC 2010] Michael Fellinger * Allow latest version of Rack/Innate [a2b04aa | Sun May 09 17:19:43 UTC 2010] Michael Fellinger * Remove gemcutter development dependency [1373a3a | Sun Apr 04 00:07:29 UTC 2010] injekt * updated mailmap [0a9e80e | Sun Apr 04 07:57:11 UTC 2010] Michael Fellinger * Version 2010.04.04 [8a77923 | Fri Apr 02 22:43:02 UTC 2010] Michael Fellinger * Version 2010.04 [f8a2708 | Fri Apr 02 22:41:43 UTC 2010] Michael Fellinger * Fix Mustache engine [a1c7fd6 | Fri Apr 02 22:34:50 UTC 2010] Michael Fellinger * Update post install message [fd3697a | Fri Apr 02 22:34:36 UTC 2010] Michael Fellinger * Update dependencies [135bc90 | Fri Apr 02 14:11:24 UTC 2010] injekt * fixed file dispatcher spec [4891e4b | Fri Apr 02 08:35:11 UTC 2010] injekt * added scaffolding_extensions dev dependency [f098e58 | Fri Apr 02 08:05:51 UTC 2010] injekt * fixed todolist requires [32c33de | Fri Apr 02 07:46:31 UTC 2010] injekt * pagination fixes [89080f4 | Fri Apr 02 07:19:34 UTC 2010] injekt * paginate helper to extend sequel with pagination [8c1a80a | Fri Apr 02 07:12:21 UTC 2010] injekt * fixed blog example [a4cc3cc | Mon Mar 29 22:13:35 UTC 2010] injekt * fixed partial example [df28492 | Mon Mar 29 21:59:09 UTC 2010] injekt * fix layout example [33fe3d0 | Fri Mar 26 19:49:18 UTC 2010] injekt * fixed path in usage example [de80952 | Fri Mar 26 19:45:54 UTC 2010] injekt * fixed a couple of depreciated methods in documentation [68682c1 | Fri Mar 26 09:18:05 UTC 2010] injekt * Change app location setting to how it's documented [7de6f76 | Fri Mar 26 08:51:35 UTC 2010] injekt * added spec for todolist example [1c2848e | Fri Mar 26 08:29:47 UTC 2010] injekt * fixed todolist example [fccee57 | Wed Mar 24 22:00:37 UTC 2010] injekt * fixed documention for number_counter, wrong method name used [a7ee66f | Wed Mar 24 10:20:19 UTC 2010] injekt * added spec for sequel_scaffolding [f19ddf9 | Wed Mar 24 10:11:34 UTC 2010] injekt * fixed sequel_scaffolding example [4c36872 | Wed Mar 24 08:05:12 UTC 2010] injekt * xhtml helpers should chomp leading slash from prefix [d4dcc8a | Wed Mar 24 00:24:28 UTC 2010] injekt * adapter handler should be fastcgi rack handler [d11daa3 | Tue Mar 23 18:07:40 UTC 2010] injekt * Project creator not copying dotfiles (.htaccess) due to globbing [bd1ec41 | Fri Mar 19 09:22:55 UTC 2010] Michael Fellinger * Replace last occurances of Global [050a949 | Fri Mar 12 02:44:20 UTC 2010] Masahiro Nakagawa * Fix Mustache template adapter Mustache changed template context(latest version doesn't use Hash). So, if template file doesn't find, use Mustache::Context instead of Hash. [6df728c | Thu Mar 11 16:14:43 UTC 2010] crab * use Ramaze.options.prefix as link prefix [1095d18 | Tue Mar 09 09:50:23 UTC 2010] Michael Fellinger * ramaze is no dependency of ramaze [b46443d | Tue Mar 09 09:47:57 UTC 2010] Michael Fellinger * Fix .dup in Rakefile [43a38b8 | Mon Mar 08 21:55:07 UTC 2010] Michael Fellinger * Version 2010.03 [8629332 | Tue Mar 02 13:36:52 UTC 2010] Michael Fellinger * Gracefully handle empty commit title [04e7ac5 | Tue Mar 02 13:31:21 UTC 2010] Michael Fellinger * Remove polyglot dependency, it's indirect [cc60569 | Fri Feb 26 02:31:39 UTC 2010] Michael Fellinger * Fix upload example [957bbee | Sun Feb 14 22:01:33 UTC 2010] Michael Fellinger * Update todolist.html [9c39d64 | Sun Feb 14 05:55:29 UTC 2010] jShaf * [2b917ff | Sun Feb 14 05:48:10 UTC 2010] jShaf * [5c93ded | Tue Feb 02 16:26:17 UTC 2010] Michael Fellinger * Revert "Made Haml cache more efficient" This reverts commit 45db6fe0696dfac7deeebba42c62c6bcca8bab10. [87a2562 | Tue Feb 02 16:26:02 UTC 2010] Michael Fellinger * Revert "Fixed small bug in haml view" This reverts commit a226b402518e17d1715b1632981732a5d43b56f9. [a85a6b5 | Tue Feb 02 16:25:41 UTC 2010] Michael Fellinger * Revert "Little refactoring" This reverts commit 4e6d6a17e46d8d26c012781ef7b5140fba50237c. [ba832e9 | Tue Feb 02 16:23:30 UTC 2010] Michael Fellinger * Document the failure around Haml caching as a spec [d931221 | Wed Jan 20 19:52:08 UTC 2010] Michael Fellinger * Fix old reference to BASEDIR [0b4d33d | Wed Jan 20 19:34:46 UTC 2010] Michael Fellinger * Update the HTML todolist tutorial to match TXT version [a1ca6a1 | Wed Jan 13 12:32:00 UTC 2010] Michael Fellinger * Fix wiktacular [d23dd7b | Wed Jan 13 09:34:58 UTC 2010] mwlang * minor tweaks [645e221 | Wed Jan 13 08:22:01 UTC 2010] mwlang * fixed anchor in new.xhtml [1b3192d | Wed Jan 13 08:11:03 UTC 2010] mwlang * fixed the specs for wiktacular [037dfd9 | Wed Jan 13 07:10:41 UTC 2010] mwlang * updated to work with Ramaze 2010.01 [4ea45ca | Wed Jan 13 07:05:23 UTC 2010] mwlang * changing directory names to current conventions [519e76f | Tue Jan 12 08:56:30 UTC 2010] kez * Fixed a bug with the auto_link regexp [fb08f7c | Thu Jan 07 12:48:32 UTC 2010] Michael Fellinger * Next release is going to need rubygems 1.3.5 [017a759 | Thu Jan 07 12:48:19 UTC 2010] Michael Fellinger * Remove some dev dependencies we don't need [1e88bb6 | Wed Jan 06 23:58:30 UTC 2010] Michael Fellinger * Version 2010.01 [c29407c | Wed Jan 06 23:57:43 UTC 2010] Michael Fellinger * New version spec [2dbf20e | Wed Jan 06 23:54:58 UTC 2010] Michael Fellinger * Fix form spec for latest Hpricot [4e5d5b3 | Wed Jan 06 23:27:34 UTC 2010] Michael Fellinger * Revert change made by Dmitry Gorbik [23412e5 | Tue Nov 24 00:42:44 UTC 2009] Dmitry Gorbik * Small form helper fix [4e6d6a1 | Mon Oct 19 15:40:00 UTC 2009] Dmitry Gorbik * Little refactoring [a226b40 | Mon Oct 19 11:24:13 UTC 2009] Dmitry Gorbik * Fixed small bug in haml view [45db6fe | Mon Oct 19 02:07:42 UTC 2009] Dmitry Gorbik * Made Haml cache more efficient [2dd1012 | Wed Jan 06 01:20:57 UTC 2010] Zoxc * Added support for the Lokar template engine. [d1dc44e | Tue Dec 22 02:35:11 UTC 2009] Michael Fellinger * update mailmap [d7dd102 | Tue Dec 22 02:03:40 UTC 2009] Michael Fellinger * Seems like git finally got its act together [3a24ddd | Fri Dec 18 11:32:06 UTC 2009] Michael Fellinger * Allow absolute external uris for css [1f83803 | Thu Nov 19 11:49:20 UTC 2009] Michael Fellinger * Fix mustache engine for 1.8 [79ddac2 | Thu Nov 19 11:34:59 UTC 2009] Michael Fellinger * Spell out requires of snippets [67eb0aa | Tue Nov 17 01:14:18 UTC 2009] Michael Fellinger * Nicer require [8e72903 | Wed Nov 04 19:51:49 UTC 2009] mig * Revert "Add imap_auth.rb in examples/misc/" This reverts commit 8dd2b7860f7f50b5604e9a8333a0c7d01ade1802. [c0a6bbd | Wed Nov 04 19:45:07 UTC 2009] mig * Replace R method with r in markaby view [51f0cc1 | Wed Nov 04 19:41:28 UTC 2009] mig * Replace R method with r in markaby controller [e4ec45d | Wed Oct 21 19:17:28 UTC 2009] mig * Add imap_auth.rb in examples/misc/ [d29bafe | Sun Oct 18 22:46:36 UTC 2009] Michael Fellinger * Fix logic error in project creator [1cc16ac | Sun Oct 18 13:13:06 UTC 2009] Dmitry Gorbik * form_checkbox_tag added for working with multiple checkboxes [0ad9c9c | Sun Oct 18 15:54:02 UTC 2009] Michael Fellinger * Make the ProjectCreator code a bit more readable [02a9609 | Sat Oct 17 15:51:29 UTC 2009] Dmitry Gorbik * Rails-like output for project generator [6ab8b38 | Sat Oct 17 17:40:23 UTC 2009] Masahiro Nakagawa * Add Mustache template engine [2398699 | Sun Oct 11 14:02:11 UTC 2009] Clive Crous * Correct a2 encoding within httpdigest helper to use remotely given uri [903c522 | Sun Oct 11 13:30:44 UTC 2009] Clive Crous * reset digest_authorize before each test, I really don't trust digest_authorize completely it does not seem to obey the digest-auth specification correctly [96b2e65 | Sun Oct 11 13:12:39 UTC 2009] Clive Crous * Specs should be using digest_authentication not basic (how and when did this happen?) [9683aa5 | Sun Oct 11 12:46:34 UTC 2009] Clive Crous * Ensure that authentication request responses for httpdigest do not get cached [de3572b | Sun Oct 11 12:32:40 UTC 2009] Clive Crous * Cleanup existing and (re)add a few httpdigest specs [2f62921 | Sun Oct 11 11:37:36 UTC 2009] Clive Crous * Ensure that the httpdigest helper always returns challenge headers on authentication failure [f827b63 | Wed Sep 30 12:12:09 UTC 2009] starapor * adding missing handlers to slippers so that you can customize the error handling [842d47f | Fri Oct 02 22:09:43 UTC 2009] Michael Fellinger * Version 2009.10 [ba23aa6 | Fri Oct 02 22:09:32 UTC 2009] Michael Fellinger * dependency against latest innate [e4c63be | Fri Oct 02 22:06:41 UTC 2009] Michael Fellinger * Improve release tasks [6d758f3 | Thu Oct 01 21:39:03 UTC 2009] Mario Gutierrez * Add missing erector spec template [84587e5 | Thu Oct 01 21:38:04 UTC 2009] Mario Gutierrez * Call helper methods from external erector template [a95384c | Thu Oct 01 19:24:32 UTC 2009] Mario Gutierrez * moved erector helper methods from engine into helper [6c10e2a | Tue Sep 29 21:03:07 UTC 2009] Michael Fellinger * Fix slippers spec [4b31204 | Tue Sep 29 20:55:31 UTC 2009] Michael Fellinger * Adding slippers as dev dependency [9561d90 | Tue Sep 29 20:46:23 UTC 2009] Michael Fellinger * Update dependencies [d7d368b | Mon Sep 28 20:14:55 UTC 2009] Mario Gutierrez * Added strict_xhtml Erector method [23ffbd0 | Mon Sep 28 15:01:11 UTC 2009] Mario Gutierrez * Updated Erector dependencies [e70a358 | Sun Sep 27 21:23:03 UTC 2009] Mario Gutierrez * added erector specs [72684cb | Sun Sep 27 14:39:33 UTC 2009] Mario Gutierrez * adding erector engine convenience methods [18501a7 | Sun Sep 27 13:12:25 UTC 2009] Mario Gutierrez * adding Erector view engine [98e41a6 | Sat Sep 26 07:53:20 UTC 2009] starapor * the view_root now uses all the view directories available in teh attribute [b4f6f0e | Sat Sep 26 07:19:12 UTC 2009] starapor * Adding a view engine for slippers [5dda528 | Sun Aug 16 19:58:31 UTC 2009] Michael Fellinger * Remove shared mock, fix webrat [f545a47 | Tue Aug 11 10:01:33 UTC 2009] Michael Fellinger * Fix wrong constant reference [e7732d1 | Tue Aug 11 09:39:37 UTC 2009] Michael Fellinger * Only try to get win32console on ruby < 1.9, fix logger [8d79efe | Wed Aug 05 19:58:10 UTC 2009] Michael Fellinger * Provide support for :haml_options trait again [1d21bad | Sat Aug 01 11:07:45 UTC 2009] Pistos * Don't use system temp dir; ('openid-store' in our case). Signed-off-by: Michael Fellinger [e417109 | Mon Jul 27 12:00:18 UTC 2009] Pistos * Fixed error in rdocs of Ramaze::Request#to_instance_variables. Signed-off-by: Michael Fellinger [3713845 | Sat Aug 01 15:39:25 UTC 2009] Yutaka HARA * Added DataMapperPager (does not load all the rows) Signed-off-by: Michael Fellinger [802c0d9 | Fri Jul 31 16:03:27 UTC 2009] Yutaka HARA * paginate helper supports DataMapper Signed-off-by: Michael Fellinger [c098591 | Wed Jul 29 20:39:33 UTC 2009] Michael Fellinger * Require snippets using Find::find instead of Dir::glob [37470de | Sat Jul 25 21:30:04 UTC 2009] Michael Fellinger * Fixing the auth example by mapping it to / [e95e5f1 | Sat Jul 25 02:04:21 UTC 2009] Michael Fellinger * Update announcement [d0267ff | Sat Jul 25 01:56:44 UTC 2009] Michael Fellinger * Version 2009.07 [e802979 | Sun Jul 19 10:16:06 UTC 2009] Michael Fellinger * Update versions for Rakefile [311b372 | Sun Jul 19 08:39:12 UTC 2009] Michael Fellinger * Fix marshal size for 1.8 [42516be | Fri Jul 17 17:02:05 UTC 2009] Michael Fellinger * Raise correct exception depending on existence of KeyError [90d49ee | Fri Jul 17 16:40:09 UTC 2009] Michael Fellinger * Fix some more 1.8 incompatibilities [5121688 | Fri Jul 17 16:21:25 UTC 2009] Michael Fellinger * Don't require nokogiri [17c4aa6 | Fri Jul 17 16:21:06 UTC 2009] Michael Fellinger * Forgot using 1.8 syntax [9fd07cb | Fri Jul 17 16:16:29 UTC 2009] Michael Fellinger * Try to make the blue_form spec nicer [6bb2c79 | Fri Jul 17 16:07:45 UTC 2009] Michael Fellinger * Fix syntax error in LRU cache [2cc4309 | Fri Jul 17 15:09:12 UTC 2009] Michael Fellinger * Adding Helper::BlueForm and spec [cd77929 | Fri Jul 17 14:59:58 UTC 2009] Michael Fellinger * Adding LRU cache [252dda0 | Thu Jul 16 10:04:47 UTC 2009] Michael Fellinger * Rely on Gestalt to make proper markup for paginate [fe6c09f | Tue Jul 14 14:01:08 UTC 2009] Michael Fellinger * Fix Request#to_instance_variables [b8d016b | Thu Jul 02 19:28:05 UTC 2009] Michael Fellinger * Increase the time we wait for the cache ttl to expire [eb63517 | Thu Jul 02 19:20:56 UTC 2009] Michael Fellinger * Recognize Spec precondition and Spec require in bacon task [552ae84 | Thu Jul 02 18:48:04 UTC 2009] Michael Fellinger * Add the ramaze/lib directory to -I on bacon task [0333e52 | Thu Jul 02 18:34:12 UTC 2009] Michael Fellinger * Clean up the spec middleware mess, it's _always_ m.run(Ramaze::AppMap) [02a7c0b | Thu Jul 02 17:43:27 UTC 2009] Michael Fellinger * Add missing rack-contrib development dependency [5d14456 | Thu Jul 02 17:35:12 UTC 2009] Michael Fellinger * Now even obfuscate_mail should work on 1.8 again [6547065 | Thu Jul 02 17:13:22 UTC 2009] Michael Fellinger * Layout helper asks for #to_hash, so it should use it. Also don't rely on Enumerable#first, not in 1.8.6 [21e47bb | Thu Jul 02 17:12:49 UTC 2009] Michael Fellinger * Don't rely on order in less spec [1389dd8 | Thu Jul 02 16:28:12 UTC 2009] Michael Fellinger * Improve gem_setup task [dd9d838 | Thu Jul 02 14:02:57 UTC 2009] Michael Fellinger * Update announcement [158ae0f | Tue Jun 30 17:50:13 UTC 2009] Michael Fellinger * Let the bacon task pass -I with the root directory [4747ef4 | Tue Jun 30 17:49:34 UTC 2009] Michael Fellinger * Fix the require path for bin/ramaze spec [1667e7f | Tue Jun 30 17:48:10 UTC 2009] Michael Fellinger * Refactor AddressableRoute, use instance variable instead of constant [a41c4ac | Tue Jun 30 17:47:22 UTC 2009] Michael Fellinger * Fix annoying behaviour when '/' location is assigned to an app earlier loaded, apps after it would overwrite the location. Now only :pristine uses it by default [2e7a643 | Tue Jun 30 17:45:44 UTC 2009] Michael Fellinger * Remove ContentLength middleware from default stacks, all Rack handlers do that already [cfef249 | Tue Jun 30 17:45:19 UTC 2009] Michael Fellinger * Fix the misc/css example [4dcc77d | Tue Jun 30 17:43:50 UTC 2009] Michael Fellinger * Use absolute path when spec requires spec/helper, '.' will be removed from the load path in 1.9.2 [03bd5bb | Sun Jun 28 12:43:57 UTC 2009] Michael Fellinger * Remove deprecated cache method, add basic doc for cache_action [b2ae4dd | Thu Jun 25 18:18:58 UTC 2009] Michael Fellinger * Improve the cache_value method of the cache helper, rename the cache used to cache_helper_value, and add some docs describing the new behaviour [0a4cbaf | Thu Jun 18 11:14:26 UTC 2009] Michael Fellinger * Remove cruft from less [de61a32 | Thu Jun 18 11:09:15 UTC 2009] Michael Fellinger * Add support for the less css templating engine [529681e | Thu Jun 18 11:08:18 UTC 2009] Michael Fellinger * Fix some spelling mistakes in the readme [f90b76e | Sat Jun 13 19:22:10 UTC 2009] Michael Fellinger * The spec mode was flawed, fix it and give proto better defaults [3aa5bfb | Fri Jun 12 19:54:51 UTC 2009] Michael Fellinger * Version 2009.06.12 [d933aa5 | Wed Jun 10 00:28:14 UTC 2009] Aaron Mueller * Update the identity helper with the new link helper. [dbf25ed | Mon Jun 08 19:29:08 UTC 2009] Masahiro Nakagawa * Rewrite localization example Signed-off-by: Michael Fellinger [e2c9414 | Mon Jun 08 07:12:04 UTC 2009] Michael Fellinger * Make sure that the config.ru knows the correct location [5e92d92 | Thu Jun 04 21:41:23 UTC 2009] Michael Fellinger * Fix the Sequel dependency, 3.1.0 isn't out yet [ea236c8 | Thu Jun 04 19:48:23 UTC 2009] Michael Fellinger * Fix bug with localmemcache on 1.9 [83f78c3 | Thu Jun 04 19:09:44 UTC 2009] Michael Fellinger * Version 2009.06.04 [b67f27d | Thu Jun 04 18:56:01 UTC 2009] Michael Fellinger * Fix Controller for 1.8.6 [38430a9 | Wed Jun 03 18:20:14 UTC 2009] Michael Fellinger * Fix the bacon task dependency [3d44f3b | Tue Jun 02 18:50:50 UTC 2009] Michael Fellinger * Version 2009.06 [a7f9a02 | Tue Jun 02 18:45:03 UTC 2009] Michael Fellinger * Use the development-dependencies that rubygems offers [d2c2b85 | Tue Jun 02 14:27:52 UTC 2009] Michael Fellinger * Fix the Cache::Sequel to work with 3.1.0 [b41b981 | Tue Jun 02 13:09:35 UTC 2009] Michael Fellinger * Make sure the Time format is the same as on 1.8 [de73014 | Tue Jun 02 12:56:56 UTC 2009] Michael Fellinger * form_select :multiple parameter can now be numeric to omit :size [c7fbf0c | Tue Jun 02 12:43:24 UTC 2009] Michael Fellinger * Adding Ramaze::AddressableRoute for great profit! [fdde916 | Mon Jun 01 12:30:41 UTC 2009] Michael Fellinger * Move the bacon-specific code to ramaze/spec/bacon, prepare for test-framework agnostic behaviour [3e3bc0a | Mon Jun 01 08:32:43 UTC 2009] Michael Fellinger * Preserve file permissions when copying via ProjectCreator [a634582 | Sun May 31 19:13:11 UTC 2009] Michael Fellinger * A little bit of example-usage for Helper::Form#form_select, improve by allowing :multiple => 10 [c12a0a4 | Sun May 31 18:57:18 UTC 2009] Michael Fellinger * Add shared(:webrat) so you can run your specs with that [f1a2669 | Sun May 31 18:55:46 UTC 2009] Michael Fellinger * Deprecate shared(:mock), use shared(:rack_test) instead [4f23d16 | Thu May 28 11:04:47 UTC 2009] Pistos * Documented the Layout helper. [2529786 | Thu May 28 07:15:19 UTC 2009] Michael Fellinger * Put layout helper into controller singleton only, fix specs, improve style [d0e381f | Wed May 27 12:20:11 UTC 2009] Pistos * Added Layout helper. [569f262 | Wed May 27 12:19:52 UTC 2009] Pistos * Don't need explicit "helper :layout". [50b8312 | Wed May 27 12:18:29 UTC 2009] Pistos * Match against regexps in spec, not strings. last_response.body seems to be an array, so use the first element (the body text). [41ad023 | Wed May 27 11:38:39 UTC 2009] Pistos * Added Layout helper specs, with layout file for testing. [65e3666 | Wed May 27 12:46:19 UTC 2009] Pistos * Removed old todolist.mkd from my (Pistos) fork. [6622d94 | Wed May 27 12:45:14 UTC 2009] Pistos * Removed CHANGELOG file from my (Pistos) fork. [a84f675 | Wed May 27 12:20:11 UTC 2009] Pistos * Added Layout helper. [6d5875c | Wed May 27 12:19:52 UTC 2009] Pistos * Don't need explicit "helper :layout". [5a58feb | Wed May 27 12:18:29 UTC 2009] Pistos * Match against regexps in spec, not strings. last_response.body seems to be an array, so use the first element (the body text). [eabc52d | Wed May 27 11:38:39 UTC 2009] Pistos * Added Layout helper specs, with layout file for testing. [68242b3 | Thu May 28 00:32:16 UTC 2009] Michael Fellinger * Remove deprecated method Object#acquire [3fc4622 | Thu May 28 00:32:01 UTC 2009] Michael Fellinger * Remove deprecated methods String#/ and Symbol#/ [272fced | Thu May 28 00:31:42 UTC 2009] Michael Fellinger * Remove deprecated methods on Helper::Cache [31b809a | Thu May 28 00:31:34 UTC 2009] Michael Fellinger * Remove deprecated methods on Helper::Auth [1e4ac92 | Thu May 28 00:31:14 UTC 2009] Michael Fellinger * Remove deprecated methods on Controller [a0a9329 | Thu May 28 00:27:26 UTC 2009] Michael Fellinger * Remove specs for deprecated link methods [f412fa3 | Thu May 28 00:27:12 UTC 2009] Michael Fellinger * Fix some YARD [57e7a85 | Thu May 28 00:27:01 UTC 2009] Michael Fellinger * Remove deprecated Helper::Link A|R|Rs [cafe657 | Tue May 26 23:04:13 UTC 2009] Michael Fellinger * Fix facebook.rb syntax for ruby 1.9 [2bf3434 | Sun May 24 11:32:31 UTC 2009] Michael Fellinger * Remove cruft from RouteExceptions [731622d | Thu May 21 15:51:49 UTC 2009] Michael Fellinger * Silence regexp warning [bae2b53 | Wed May 20 10:00:37 UTC 2009] Antti Tuomi * link helper now should use Ramaze.options.prefix [af753a0 | Wed May 20 09:43:01 UTC 2009] Antti Tuomi * link helper spec did not set the prefix [eba4734 | Tue May 19 17:45:14 UTC 2009] Antti Tuomi * spec to check if the link helper works properly with prefix [3aeadad | Wed May 20 10:00:37 UTC 2009] Antti Tuomi * link helper now should use Ramaze.options.prefix [6dc8f88 | Wed May 20 09:43:01 UTC 2009] Antti Tuomi * link helper spec did not set the prefix [1391f90 | Tue May 19 17:45:14 UTC 2009] Antti Tuomi * spec to check if the link helper works properly with prefix [30db1aa | Tue May 19 09:41:13 UTC 2009] Michael Fellinger * Minor cleanup [50c9971 | Tue May 19 09:41:00 UTC 2009] Michael Fellinger * Fix some yard tags [086d3e4 | Fri May 15 19:52:06 UTC 2009] Michael Fellinger * Remove invalid spec, the automatic mapping is completely specified now [9b73450 | Fri May 15 19:47:23 UTC 2009] Michael Fellinger * Fix ambigous linking in helper/paginate [6fb74df | Fri May 15 19:47:06 UTC 2009] Michael Fellinger * Avoid useless iteration in helper/paginate [fdfe5b9 | Fri May 15 19:46:27 UTC 2009] Michael Fellinger * Fix a bug in the lonely controller mapping, it should not ignore maps set explicitly [eb5e4ef | Fri May 15 07:53:23 UTC 2009] Michael Fellinger * Don't write a file to /tmp during the bin/ramaze spec [5359459 | Fri May 15 01:31:51 UTC 2009] Michael Fellinger * Fix ramaze/params spec to pass on 1.9 [46c2cfa | Fri May 15 01:31:36 UTC 2009] Michael Fellinger * Amend helper/bench spec to pass on 1.9 [71916e2 | Fri May 15 01:31:18 UTC 2009] Michael Fellinger * Use normal RouteExceptions interface [7b6cac5 | Fri May 15 01:30:45 UTC 2009] Michael Fellinger * Remove useless tabs from bin/ramaze help [21763df | Fri May 15 01:19:31 UTC 2009] Michael Fellinger * Make sure the Etag middleware works on 1.9 as well [8ee6b94 | Fri May 15 01:18:54 UTC 2009] Michael Fellinger * generate_mapping shouldn't fail too early [1d0dff5 | Fri May 15 01:18:19 UTC 2009] Michael Fellinger * Fix bug with memcache on 1.9... String#[:foo] is evil! [508bffc | Fri May 15 01:17:43 UTC 2009] Michael Fellinger * Fix ordering of middleware [5be67f5 | Thu May 14 23:41:28 UTC 2009] Michael Fellinger * Simplify and make the template specs work on ruby 1.9 [b9fa0c4 | Wed May 13 11:25:54 UTC 2009] Michael Fellinger * Don't output the require exception twice in ramaze/setup [7bc9d65 | Wed May 13 10:10:10 UTC 2009] Michael Fellinger * output to logger in ramaze/setup if Log is available [e6b4996 | Wed May 13 10:09:21 UTC 2009] Michael Fellinger * Avoid infinite recursion in ramaze/setup when a gem name does not match it's lib name [8bbb8e8 | Mon May 11 21:53:57 UTC 2009] TJ Vanderpoel * nope, had one more buglet Signed-off-by: Michael Fellinger [9a3edf3 | Mon May 11 21:47:12 UTC 2009] TJ Vanderpoel * corrected the local_ramaze conditional check Signed-off-by: Michael Fellinger [33fa3aa | Mon May 11 21:38:17 UTC 2009] TJ Vanderpoel * added some specs for ramaze/bin, correcting a require bug already in bin/ramaze Signed-off-by: Michael Fellinger [b4bad57 | Mon May 11 17:33:00 UTC 2009] Michael Fellinger * Put a notice into config.ru making clear that the handler cannot be set inside [46cf89a | Mon May 11 17:31:59 UTC 2009] Michael Fellinger * Fix last issue in bin/ramaze [4efbb88 | Mon May 11 06:56:54 UTC 2009] Michael Fellinger * Automate release:github a tiny little bit, and adapt it to pick up doc/AUTHORS [608a89c | Mon May 11 06:52:19 UTC 2009] Michael Fellinger * Fix the todo task [9f1a651 | Mon May 11 06:44:03 UTC 2009] Michael Fellinger * Move CHANGELOG into doc/ again, punish the responsible rake task [e6715e1 | Mon May 11 06:37:47 UTC 2009] Michael Fellinger * Fix bug that made default port/handler break in bin/ramaze [96167c7 | Sun May 10 08:39:53 UTC 2009] Michael Fellinger * Remove old tutorial [e39005a | Sun May 10 08:38:04 UTC 2009] Michael Fellinger * Some updates to the tutorial [bc08091 | Sat May 09 14:33:42 UTC 2009] Michael Fellinger * Add spec for memcached sessions and automatic amending of memcached ttl [3124879 | Sat May 09 14:26:23 UTC 2009] Michael Fellinger * Warn and fix the ttl if someone exceeds the maximum ttl allowed by MemCache [602f180 | Fri May 08 23:25:53 UTC 2009] Michael Fellinger * After years of spelling it wrong... [796627a | Fri May 08 20:47:31 UTC 2009] Michael Fellinger * Fix "bug" pointed out by druby [096f051 | Fri May 08 20:23:40 UTC 2009] Michael Fellinger * Comaptibility with localmemcache 0.4.0 [4dd866b | Fri May 08 20:15:39 UTC 2009] Michael Fellinger * Implement and spec the lonely controller rule [5509950 | Thu May 07 21:30:49 UTC 2009] Pistos * Explicitly state top-level namespace for ::File in config.ru, since otherwise it is confused for Rack::File. [c6242e4 | Thu May 07 21:24:47 UTC 2009] Pistos * Added a .gitignore for some basic byproduct files and dirs. [6efaaaa | Fri May 08 11:24:20 UTC 2009] Michael Fellinger * Respect preset options for port/adapter on ramaze start [47b5704 | Fri May 08 10:42:58 UTC 2009] Michael Fellinger * Reflect removal of constant spec [71873f1 | Thu May 07 21:36:59 UTC 2009] Pistos * rake gemspec [dc3fbad | Thu May 07 21:30:49 UTC 2009] Pistos * Explicitly state top-level namespace for ::File in config.ru, since otherwise it is confused for Rack::File. [ddff30a | Thu May 07 21:24:47 UTC 2009] Pistos * Added a .gitignore for some basic byproduct files and dirs. [6780a7b | Wed May 06 22:56:16 UTC 2009] Michael Fellinger * Remove spec for Object#constant [1719994 | Wed May 06 22:39:28 UTC 2009] Michael Fellinger * Version 2009.05 [6025293 | Wed May 06 22:36:58 UTC 2009] Michael Fellinger * VERSION=xxx rake release:xxx [025d2f0 | Wed May 06 22:33:00 UTC 2009] Michael Fellinger * bring rakefile up to date [645a7e9 | Wed May 06 22:31:47 UTC 2009] Michael Fellinger * Finally move readme to README.md [fe285e1 | Wed May 06 22:31:26 UTC 2009] Michael Fellinger * Remove some useless stuff from the readme [9622f31 | Wed May 06 22:21:25 UTC 2009] Michael Fellinger * Last minute changes to tasks [966fce3 | Wed May 06 19:38:55 UTC 2009] Michael Fellinger * Remove Object#constant since it collides with facets [1d9215a | Mon May 04 01:10:44 UTC 2009] Andreas Karlsson * Clean up benchmarking. Clean up benchmarking a bit adding support for a mode switch, which defaults to "live". Move "require 'ramaze'" to support custom environments and killing the logging correctly. Also fix bug where Ramaze.start was run in one of the files in the suite, and finally remove the unused --no-sessions. Signed-off-by: Michael Fellinger [b8337e9 | Tue May 05 22:29:15 UTC 2009] Michael Fellinger * Add some more non-serious fail [be9d471 | Tue May 05 21:23:58 UTC 2009] Michael Fellinger * Don't use Binding#eval [b79699a | Tue May 05 13:13:37 UTC 2009] Michael Fellinger * Add comment about the state of serialization in Sequel [38a1f25 | Tue May 05 12:13:25 UTC 2009] Michael Fellinger * Make the sequel cache and the spec of sequel_form compatible with sequel 3.0.0 [0a0553a | Mon May 04 23:39:29 UTC 2009] Michael Fellinger * Chat examples uses Etanni, not Nagoro [5778a31 | Sun May 03 04:04:38 UTC 2009] TJ Vanderpoel * refactored bin code to lib/ramaze/tool/bin [b84b566 | Sun May 03 21:53:26 UTC 2009] Michael Fellinger * Request::current is in Innate [53108b8 | Sat May 02 20:29:18 UTC 2009] Michael Fellinger * We don't rely on STATE anymore [8d2e57b | Sat May 02 21:09:37 UTC 2009] Michael Fellinger * Fix the benchmarks [2d5dda3 | Fri May 01 17:22:13 UTC 2009] Andreas Karlsson * Use faster method for erubis templates. The evaluate method uses instance_eval on a cached proc instead of using eval like the erb compatible result method does. Signed-off-by: Michael Fellinger [cfd250c | Fri May 01 14:02:03 UTC 2009] Michael Fellinger * Skip :install_dependencies until we figure out something better [1829f38 | Fri May 01 14:00:39 UTC 2009] Michael Fellinger * Seems like a regression in rack-test... [09d6fa1 | Fri May 01 14:00:07 UTC 2009] Michael Fellinger * Fix the errors spec, it should run in :dev mode since :live has no ShowExceptions anymore [499c4ed | Fri May 01 13:55:57 UTC 2009] Michael Fellinger * Make RouteExceptions a little bit less verbose [a8c6383 | Fri May 01 13:55:35 UTC 2009] Michael Fellinger * Give the other engines compile caching as well (where it makes sense) [81380cf | Fri May 01 12:49:55 UTC 2009] Michael Fellinger * Adapt gestalt spec to latest rack-test [e784317 | Fri May 01 12:43:50 UTC 2009] Michael Fellinger * Fix the helper/caching example [93a741b | Thu Apr 30 16:06:35 UTC 2009] Michael Fellinger * Use caching for Haml [47a6dec | Thu Apr 30 16:06:17 UTC 2009] Michael Fellinger * Integrate View better with Innate [e86a143 | Thu Apr 30 14:57:51 UTC 2009] Michael Fellinger * Split up Haml engine, prepare for caching [b2747cc | Wed Apr 29 16:33:40 UTC 2009] Michael Fellinger * Don't use ShowExceptinos in live mode [552a4c3 | Wed Apr 29 00:52:34 UTC 2009] Michael Fellinger * Fix RotatingInformer [2e53d6e | Tue Apr 28 11:50:27 UTC 2009] Michael Fellinger * Fix the release tasks [e3c1418 | Tue Apr 28 11:49:49 UTC 2009] Michael Fellinger * Give the paginator a count [a395c1c | Mon Apr 27 10:33:16 UTC 2009] Michael Fellinger * Ultraviolet needs traited [a65aaad | Mon Apr 27 08:47:48 UTC 2009] Michael Fellinger * Forward logging to Ramaze::Log by default [d0536fa | Sun Apr 26 19:21:41 UTC 2009] Tadahiko Uehara * Add support Gestalt as another template engine. Signed-off-by: Michael Fellinger [37b2928 | Sun Apr 26 18:51:52 UTC 2009] Tadahiko Uehara * Add gestalt to take text and attributes as arguments. Signed-off-by: Michael Fellinger [42e96b1 | Sat Apr 25 22:19:31 UTC 2009] Michael Fellinger * Version 2009.04 [8a0c6ac | Sat Apr 25 21:31:04 UTC 2009] Michael Fellinger * Update dependencies [1da636d | Thu Apr 23 14:14:51 UTC 2009] TJ Vanderpoel * Fixes for bin/ramaze on Win32 * Added #rackup_path for finding the location of the rackup binary * Added #is_windows? for a standard platform check * Added new exec formats for Win32 Signed-off-by: Michael Fellinger [b734de6 | Fri Apr 24 09:52:28 UTC 2009] Michael Fellinger * Remove ancient example [156f355 | Thu Apr 23 22:56:34 UTC 2009] Michael Fellinger * Make all text in config.ru ASCII [b8fff75 | Wed Apr 22 21:31:15 UTC 2009] Ryan Grove * Action cache now uses the full path (including params) as the cache key, preserves the Content-Type, and catches :respond [410576f | Tue Apr 21 19:32:01 UTC 2009] Ryan Grove * Evaluate cache key blocks in the scope of the node instance for the current action [41746b9 | Tue Apr 21 23:12:48 UTC 2009] Michael Fellinger * Version 2009.04.22 [711c5df | Tue Apr 21 23:11:37 UTC 2009] Michael Fellinger * strip some whitespace [f65b9a6 | Mon Apr 20 22:25:27 UTC 2009] Michael Fellinger * Relax Liquid input [e81a073 | Mon Apr 20 22:25:09 UTC 2009] Michael Fellinger * Allow access to Ramaze::View::get [d18060d | Mon Apr 20 22:24:55 UTC 2009] Michael Fellinger * Make methods of Helper::Formatting module-functions [ea15f87 | Sun Apr 19 21:02:43 UTC 2009] Ryan Grove * Fix collisions when caching methods with the same name across multiple controllers and add support for a block parameter that returns a key value to make cache_action work as expected. [9bf2985 | Mon Apr 20 12:13:15 UTC 2009] Michael Fellinger * Require sequel/extensions/inflector to get rid of silly warning [81e6bdb | Mon Apr 20 12:11:26 UTC 2009] Michael Fellinger * Show unhelpful comment for the blog trackback until someone shows me how it's done [648acce | Mon Apr 20 12:02:17 UTC 2009] Michael Fellinger * We shouldn't use partial_content, use render_partial instead [0ef8bb7 | Mon Apr 20 11:59:40 UTC 2009] Michael Fellinger * Minor improvments and some comments for Liquid engine [15a6c75 | Mon Apr 20 11:59:19 UTC 2009] Michael Fellinger * Bring blog example up to date [986ae27 | Sun Apr 19 22:24:08 UTC 2009] Michael Fellinger * Fix wikore example, i wonder whether this is worth keeping [7f478c3 | Sun Apr 19 09:17:01 UTC 2009] Michael Fellinger * Fix auth example [48adcf6 | Sat Apr 18 09:44:03 UTC 2009] Michael Fellinger * It should be `ramaze create` now [3951076 | Sat Apr 18 09:29:13 UTC 2009] Michael Fellinger * Version 2009.04.18 [afb3336 | Sat Apr 18 09:28:37 UTC 2009] Michael Fellinger * Improve tasks a bit [a4bbc31 | Fri Apr 17 09:37:14 UTC 2009] TJ Vanderpoel * Only use /proc in bin/ramaze if possible, otherwise fall back to ps Signed-off-by: Michael Fellinger [35bf7c2 | Fri Apr 17 08:36:28 UTC 2009] TJ Vanderpoel * Added status command and moved IRB.start inline instead of exec. * Status needs testing on WIN32 and OSX Signed-off-by: Michael Fellinger [df495ae | Fri Apr 17 14:48:58 UTC 2009] Michael Fellinger * Specify correct behaviour of Request#accept_language_with_weight [7cee203 | Fri Apr 17 18:52:23 UTC 2009] Michael Fellinger * Bring various Sequel specific stuff up to date [21e2c4d | Thu Apr 16 10:01:32 UTC 2009] TJ Vanderpoel * Defaults to webrick on port 7000 when starting now Signed-off-by: Michael Fellinger [bc09190 | Thu Apr 16 09:51:38 UTC 2009] TJ Vanderpoel * Fixed "ramaze start" so it doesn't try and start a new instance * added is_running? and check_running? as helpers * refactored #stop to pass it's given pid to find_pid Signed-off-by: Michael Fellinger [c29043d | Thu Apr 16 19:47:02 UTC 2009] Michael Fellinger * Adding app.rb to proto, explain new convention [2e0d0ba | Thu Apr 16 10:33:16 UTC 2009] Michael Fellinger * Make sure proto spec runs in right directory [1a8c518 | Thu Apr 16 10:17:58 UTC 2009] Michael Fellinger * Proto should use Etanni as well [146a4d6 | Thu Apr 16 10:05:43 UTC 2009] Michael Fellinger * Remove old layout from proto [95e4e98 | Wed Apr 15 17:59:47 UTC 2009] Michael Fellinger * Fix nagoro/render_partial, sorry for the mess [9eb1cf0 | Wed Apr 15 17:59:10 UTC 2009] Michael Fellinger * Remove String#each, we are compatible with Rack spec [f95cdae | Wed Apr 15 09:12:02 UTC 2009] Michael Fellinger * Use the render helper for nagoro/render_partial [730b17f | Mon Apr 13 21:35:18 UTC 2009] Michael Fellinger * Try to please the github syntax highlighter [152aad6 | Mon Apr 13 11:58:24 UTC 2009] Michael Fellinger * Rename Request#to_ivs to Request#to_instance_variables and add to_ivs alias for it [425e8ff | Sat Apr 11 11:18:39 UTC 2009] Michael Fellinger * Make Rapp example run [518ab37 | Fri Apr 10 19:30:24 UTC 2009] Michael Fellinger * Port specs to rack-test * This breaks the spec for httpdigest helper since rack assumes that plaintext auth consits of ['user:pass'].pack('m*') and we consider plaintext auth as MD5 digest auth which includes the realm. [18fabfc | Fri Apr 10 17:31:17 UTC 2009] Michael Fellinger * Add a `rake setup` task that takes care of installing dependencies [9567c23 | Thu Apr 09 18:00:33 UTC 2009] Michael Fellinger * More improvments and fixes to the localize helper [e0d48c3 | Thu Apr 09 18:00:03 UTC 2009] Michael Fellinger * This should fix the contrib EmailHelper [ed05392 | Wed Apr 08 16:19:29 UTC 2009] Michael Fellinger * run Ramaze instead of Innate, just for better look [97b1bd8 | Fri Apr 10 00:52:05 UTC 2009] Michael Fellinger * Add ContentLength middleware [591f1c0 | Wed Apr 08 00:15:59 UTC 2009] Michael Fellinger * Version 2009.04.08 [e2a87c9 | Mon Apr 06 09:27:14 UTC 2009] TJ Vanderpoel * changed path search to use request.request_uri instead of request.fullpath, to handle fastcgi, mod_rack, and any other method where rack strips part of fullpath to derive request_uri Signed-off-by: Michael Fellinger [69c3bf4 | Tue Apr 07 18:12:40 UTC 2009] Michael Fellinger * Only MainController is automapped to '/' [de89b67 | Tue Apr 07 17:41:50 UTC 2009] Michael Fellinger * Update tutorial HTML [e43fa1b | Tue Apr 07 20:38:18 UTC 2009] Michael Fellinger * render_template is really deprecated, no replacements [5922f3c | Tue Apr 07 09:21:18 UTC 2009] Michael Fellinger * Fix link to book.ramaze.net [30fec68 | Mon Apr 06 17:41:41 UTC 2009] Michael Fellinger * Add information about, and usage of: Sequel::Model.plugin(:schema) [83d41e0 | Mon Apr 06 17:32:18 UTC 2009] Michael Fellinger * Add some info about configuration to tutorial [7467ff6 | Mon Apr 06 10:35:06 UTC 2009] Michael Fellinger * Fix Flash and Link helpers [b6297da | Mon Apr 06 09:43:40 UTC 2009] Michael Fellinger * Add some lobster [eabb559 | Mon Apr 06 08:33:30 UTC 2009] Michael Fellinger * Change ext to reflect new default templating engine [36431f7 | Mon Apr 06 06:57:58 UTC 2009] Michael Fellinger * nitpicking [983cede | Mon Apr 06 06:57:48 UTC 2009] Michael Fellinger * Simplify Helper with options [5a31740 | Mon Apr 06 06:57:13 UTC 2009] Michael Fellinger * Take over the Partial helper from Innate, please use the Render helper instead [9797116 | Mon Apr 06 00:38:19 UTC 2009] Michael Fellinger * Adding Cache::LocalMemCache, see http://github.com/sck/localmemcache [d725385 | Sun Apr 05 21:26:10 UTC 2009] Michael Fellinger * Add methods removed from Innate::Request [ad0ce13 | Sun Apr 05 16:01:57 UTC 2009] Michael Fellinger * Adding contrib/app_graph, which shows all your sites apps, controllers, mappings and actions [61f621a | Sat Apr 04 09:33:23 UTC 2009] TJ Vanderpoel * Removed ramaze dependencies from binary where not needed * Allows including of custom library paths with standard ruby -I functionality. * Now passing ARGV along to irb with console command. Signed-off-by: Michael Fellinger [38f1b77 | Sat Apr 04 08:29:18 UTC 2009] bougyman * Remove version and help message from bin/ramaze Signed-off-by: Michael Fellinger [4cf3d4a | Sat Apr 04 21:17:35 UTC 2009] Michael Fellinger * Remove trailing newlines from bin/ramaze [6d912c9 | Sat Apr 04 07:53:48 UTC 2009] bougyman * Added more help and --version * Create command exits and prints error if no PROJECT given * Added more verbose description of each command * Now defaults to printing help instead of starting an application TODO: * Add ability to merge application options. Perhaps ENV setting. Signed-off-by: Michael Fellinger [aed1603 | Sat Apr 04 13:26:53 UTC 2009] Michael Fellinger * Remove contrib/sequel/fill, was quite useless anyway [02cd6ec | Sat Apr 04 13:25:59 UTC 2009] Michael Fellinger * Improve bacon task so specs can fail on dependencies without messing up all the output [de5e21f | Sat Apr 04 11:05:21 UTC 2009] Michael Fellinger * Use method instead of iv for App#url_map [597ec8c | Sat Apr 04 11:04:08 UTC 2009] Michael Fellinger * Add integration with rack/test, eventually we should port specs to that [59d3083 | Sat Apr 04 11:02:53 UTC 2009] Michael Fellinger * Run specs in spec/contrib as well [49dd9d6 | Sat Apr 04 11:02:37 UTC 2009] Michael Fellinger * Add commented list of development dependencies for release [a4c080f | Sat Apr 04 10:43:24 UTC 2009] Michael Fellinger * Improve bacon task [729ce2d | Fri Apr 03 11:06:22 UTC 2009] bougyman * Added better help output and lowered debug output * Pass along rackup --help options when requesting --help * Removed debug output from default_pidfile TODO: * Make ramaze --console work as expected * Design a methodology to pass the ramaze application itself arguments, instead of just to rack(up) Signed-off-by: Michael Fellinger [686a38d | Fri Apr 03 09:15:53 UTC 2009] bougyman * Added --force and --amend support to ramaze create. Also updated Ramaze::Tool::Create to use ROOT instead of Ramaze::BaseDir Signed-off-by: Michael Fellinger [b1ae885 | Fri Apr 03 08:58:37 UTC 2009] bougyman * Rewrite of bin/ramaze * Simple optparser for start|stop|restart|create * Passing all other args on to config.ru * Used old ramaze tool/create for creation from prototype TODO: * Enable --force and --amend to ramaze create * Recognize app.rb and rackup's options to display in --help Signed-off-by: Michael Fellinger [ea434b1 | Fri Apr 03 17:14:51 UTC 2009] Michael Fellinger * Provide access to App#url_map [aa99126 | Fri Apr 03 16:54:05 UTC 2009] Michael Fellinger * Fix link to sqlite [54f7ce0 | Fri Apr 03 16:49:13 UTC 2009] Michael Fellinger * Remove the rack/innate dependencies until rack is out [e5af4e5 | Fri Apr 03 16:48:16 UTC 2009] Michael Fellinger * Fix for redcloth spec [11118df | Fri Apr 03 16:28:26 UTC 2009] Michael Fellinger * Fix the sequel_form spec [cf18430 | Fri Apr 03 16:26:53 UTC 2009] Michael Fellinger * Remove the XSLT example and spec [0395321 | Tue Mar 31 23:53:40 UTC 2009] Michael Fellinger * Change dependency to innate-manveru, there's no rubyforge gem for it anyway... but that will cause trouble for local rake install [eb7d389 | Tue Mar 31 23:34:33 UTC 2009] Michael Fellinger * Fix Optinoal reference in blog example [5f210cc | Tue Mar 31 23:33:49 UTC 2009] Michael Fellinger * Innate::Optional is now Innate::Optioned [851e1bd | Tue Mar 31 23:21:56 UTC 2009] Michael Fellinger * Version 2009.04.01 [9033500 | Tue Mar 31 13:12:46 UTC 2009] Michael Fellinger * Use html syntax instead of xhtml for pdf generation [e597faa | Mon Mar 30 18:40:44 UTC 2009] Michael Fellinger * Adding a table of contents to the tutorial html [e0f45a7 | Mon Mar 30 18:32:16 UTC 2009] Michael Fellinger * Add source for new tutorial [709430e | Mon Mar 30 18:31:55 UTC 2009] Michael Fellinger * Generate html for new tutorial, asciidoc rocks! [09185fa | Mon Mar 30 18:30:47 UTC 2009] Michael Fellinger * Fix the basic/simple example [e2cd400 | Mon Mar 30 18:30:33 UTC 2009] Michael Fellinger * Improve the create action of the todolist [641280f | Mon Mar 30 13:40:28 UTC 2009] Michael Fellinger * require a default-controller if none is there on setup [7cc0bdc | Mon Mar 30 13:28:23 UTC 2009] Michael Fellinger * Etanni is new default engine, with .xhtml extension, everyone happy now? [dcce38f | Sun Mar 29 23:22:04 UTC 2009] Michael Fellinger * Set Innates helper constants into Ramaze::Helper [f24506e | Sun Mar 29 21:48:13 UTC 2009] Michael Fellinger * Rewrite todolist example, just needs a tutorial now... [0ae404a | Sun Mar 29 20:04:17 UTC 2009] Michael Fellinger * Remove the readme_chunks [9beaef2 | Sun Mar 29 20:02:44 UTC 2009] Michael Fellinger * Update doc/AUTHORS with more accurate data [83ba698 | Sun Mar 29 20:02:03 UTC 2009] Michael Fellinger * Avoid glibc in git shortlog [685fa37 | Sun Mar 29 20:01:12 UTC 2009] Michael Fellinger * Brand new rake tasks, fine-grained with help of raku [97e59ff | Sun Mar 29 00:16:38 UTC 2009] Michael Fellinger * Adding a .mailmap for nicer git shortlog [e7a1b97 | Fri Mar 27 22:34:13 UTC 2009] Aman Gupta * Add RDoc to ramaze/contrib/gems.rb [a250438 | Thu Mar 26 22:59:46 UTC 2009] Michael Fellinger * Fix liquid example and spec [d9bc8ac | Thu Mar 26 22:46:34 UTC 2009] Michael Fellinger * Remove last references to Amrita2 [972559b | Thu Mar 26 22:41:14 UTC 2009] Michael Fellinger * Remove Amrita2 templating engine, it's defunct with current Hpricot and doesn't look like anybody maintains it [1a28d42 | Thu Mar 26 15:18:56 UTC 2009] Clive Crous * Explicitly specify path in template examples [283239f | Thu Mar 26 22:15:57 UTC 2009] Michael Fellinger * Adding static and directory apps again [9192ec3 | Thu Mar 26 21:04:32 UTC 2009] Michael Fellinger * Remove the simple_auth example, httpdigest is way better [a30c6c8 | Thu Mar 26 20:55:04 UTC 2009] Michael Fellinger * Fix spec for hello example [1b917d6 | Thu Mar 26 20:54:16 UTC 2009] Michael Fellinger * Fix helper/maruku spec, this one changes all the time so it's more flexible now [69f65c1 | Thu Mar 26 20:52:42 UTC 2009] Michael Fellinger * Fix helper/partial spec [fdb050f | Thu Mar 26 20:50:24 UTC 2009] Michael Fellinger * Fix Element example spec [9d363e1 | Thu Mar 26 19:48:19 UTC 2009] Michael Fellinger * Mostly improving comments and UI in the blog [c5a75ee | Thu Mar 26 19:29:04 UTC 2009] Michael Fellinger * The errors wouldn't be shown in the form helper [25d7e4e | Thu Mar 26 18:06:11 UTC 2009] Michael Fellinger * Adding Helper::Formatting#number_counter, might need a better name though [1047afe | Thu Mar 26 17:26:50 UTC 2009] Michael Fellinger * Refactor Helper::Gravatar to reflect their API better, add specs for it [7df451a | Wed Mar 25 22:56:16 UTC 2009] Clive Crous * Updating example/template specs for examples that DON'T work. The following template systems don't seem to work (or at least I'm unable to get their examples to work at the moment): Amrita2 Liquid RedCloth [1d94eb0 | Wed Mar 25 22:38:11 UTC 2009] Clive Crous * update remarkably example's external template too (accidentally left off last commit) [f744a0d | Wed Mar 25 22:36:49 UTC 2009] Clive Crous * updated spec and example for templates/remarkably [47dfdac | Wed Mar 25 22:23:51 UTC 2009] Clive Crous * spec for linking example should behave like mock, not like http [c662753 | Wed Mar 25 21:20:06 UTC 2009] Clive Crous * update basic/simple example and spec for innate it seems inspect does not work as expected for request. testing this is, however, outside the scope of a simple example I think [75aa804 | Wed Mar 25 21:13:11 UTC 2009] Clive Crous * spec for css example should behave like mock, not like http [4abea5c | Wed Mar 25 21:04:01 UTC 2009] Clive Crous * correct maruku helper spec - it was using the wrong type of quotes and failing because of it [4e35cdd | Wed Mar 25 21:00:26 UTC 2009] Clive Crous * markaby and xslt are not yet implemented in ramaze/view [ca812d4 | Wed Mar 25 20:39:22 UTC 2009] Clive Crous * updated spec and example for templates/nagoro [536a4bb | Wed Mar 25 20:35:34 UTC 2009] Clive Crous * xslt currently does not work, I have however updated what I could for now [56164e7 | Wed Mar 25 20:14:55 UTC 2009] Clive Crous * template spec comparitive allows variable whitespace in html between attributes and their values [ebddf59 | Wed Mar 25 20:02:30 UTC 2009] Clive Crous * markably currently does not work, I have however updated what I could for now [fac24bf | Wed Mar 25 19:46:56 UTC 2009] Clive Crous * updated spec and example for templates/tenjin [dd0d78e | Wed Mar 25 19:45:40 UTC 2009] Clive Crous * Also autoregister .tenjin extension for Tenjin [5828115 | Wed Mar 25 19:37:17 UTC 2009] Clive Crous * use regex for home page check in template example specs [8b6c3d0 | Wed Mar 25 19:01:58 UTC 2009] Clive Crous * updated spec and example for templates/ezamar [414f6f2 | Wed Mar 25 18:50:50 UTC 2009] Clive Crous * Remove excess whitespace from Haml [fa9720e | Wed Mar 25 18:47:31 UTC 2009] Clive Crous * Correct typo: Habl => Haml [1118df3 | Wed Mar 25 18:41:20 UTC 2009] Clive Crous * updated spec and example for templates/haml [76124ca | Wed Mar 25 18:40:10 UTC 2009] Clive Crous * updated spec and example for templates/erubis [32efcd7 | Wed Mar 25 18:39:01 UTC 2009] Clive Crous * Common tests for most template example specs [41c2f11 | Wed Mar 25 23:11:27 UTC 2009] Michael Fellinger * remove faker setup [ee08c78 | Wed Mar 25 23:05:28 UTC 2009] Michael Fellinger * Remove the blog.db [89738ca | Wed Mar 25 00:10:59 UTC 2009] Michael Fellinger * jQuery v1.3.2 [e510fe3 | Wed Mar 25 22:50:16 UTC 2009] Michael Fellinger * New Helper::Partial, not well tested yet! [f45238f | Wed Mar 25 22:35:06 UTC 2009] Michael Fellinger * Ezamar now only .zmr, Etanni gets .xhtml [63d09c5 | Wed Mar 25 22:34:35 UTC 2009] Michael Fellinger * Don't be destructive to arguments to GemSetup [3ba481b | Wed Mar 25 22:34:08 UTC 2009] Michael Fellinger * Improve intro in example/simple/hello.rb [fca8bf1 | Wed Mar 25 22:33:46 UTC 2009] Michael Fellinger * Adding Gestalt#select to avoid collision with Kernel#select [3aea381 | Wed Mar 25 22:32:54 UTC 2009] Michael Fellinger * Huge update to the blog example, should probably extract it [43032e8 | Wed Mar 25 17:29:13 UTC 2009] Michael Fellinger * A couple of updates to the specs [f70cb1e | Wed Mar 25 17:28:33 UTC 2009] Michael Fellinger * Move Request and Response into better locations, Make sure we use our own Request/Response instead of Innates [d769e3b | Wed Mar 25 17:03:22 UTC 2009] Michael Fellinger * Add some methods to Request from Innate [53bc137 | Wed Mar 25 13:37:43 UTC 2009] Clive Crous * (re)enable specs for examples [7d3ebac | Wed Mar 25 13:27:02 UTC 2009] Clive Crous * Use a rather than A and remove view_root in erubis example [90eb0f9 | Wed Mar 25 13:25:59 UTC 2009] Clive Crous * Rename template directory to default: view [b38c0b7 | Wed Mar 25 12:31:11 UTC 2009] Clive Crous * Partial helper was moved to innate, update it's usage [afa2acd | Tue Mar 24 17:19:40 UTC 2009] Michael Fellinger * Adding Helper::Form#form_select [c02fb22 | Tue Mar 24 02:57:50 UTC 2009] Michael Fellinger * Add two more methods for form helper [070ccc9 | Mon Mar 23 19:16:26 UTC 2009] Michael Fellinger * Add the new Helper::Form, i carried it around for too long, move the old Helper::Form to Helper::SequelForm as it never supported another ORM [2495907 | Mon Mar 23 16:34:32 UTC 2009] Michael Fellinger * Add Helper::Disqus [c79da35 | Mon Mar 23 16:33:28 UTC 2009] Michael Fellinger * Update Nagoro view [2a514dc | Mon Mar 23 16:32:33 UTC 2009] Michael Fellinger * Action now does copy_variables since it's needed by all engines and easy to forget [b300f07 | Sat Mar 21 16:45:17 UTC 2009] Michael Fellinger * Rewrite the auth example to something simpler [5787a24 | Sun Mar 22 23:58:47 UTC 2009] Michael Fellinger * Erubis should copy variables into binding [2d085f3 | Sat Mar 21 23:09:23 UTC 2009] Michael Fellinger * Add deprecation warning for Controller::view_root [dfd5c45 | Sat Mar 21 22:55:14 UTC 2009] Michael Fellinger * Only set default engine to Nagoro if no engine was set before Ramaze.start [bde97f4 | Fri Mar 20 18:35:22 UTC 2009] Michael Fellinger * Only set root in spec if found [6fde250 | Fri Mar 20 18:20:34 UTC 2009] Michael Fellinger * Proper docs for Helper::User [6902b1b | Fri Mar 20 17:20:00 UTC 2009] Michael Fellinger * Fun little Helper::RequestAccessor [7cb5268 | Fri Mar 20 15:45:17 UTC 2009] Michael Fellinger * Deprecate contrib/gzip_filter [f6b88a5 | Fri Mar 20 15:41:48 UTC 2009] Michael Fellinger * New contrib/rest [e4dc2c7 | Fri Mar 20 14:05:39 UTC 2009] Michael Fellinger * Fix config.ru [4980a5d | Fri Mar 20 12:13:38 UTC 2009] Michael Fellinger * Fix typo [44cbafd | Thu Mar 19 20:52:30 UTC 2009] Michael Fellinger * Improve spec/helper.rb so specs can be loaded from anywhere [bc9a15a | Thu Mar 19 20:11:36 UTC 2009] Michael Fellinger * Remove cruft [5eaff4b | Thu Mar 19 20:04:53 UTC 2009] Michael Fellinger * Adapt to changes in action wrapper [2e6a21a | Thu Mar 19 18:25:01 UTC 2009] Michael Fellinger * proto/start.ru becomes proto/config.ru [9b66745 | Wed Mar 18 20:03:30 UTC 2009] Michael Fellinger * Explain what all this App stuff is about [c10c58b | Wed Mar 18 19:44:05 UTC 2009] Michael Fellinger * Embrace the new simplicity in automatic mapping in the specs [23ea9b2 | Wed Mar 18 19:41:08 UTC 2009] Michael Fellinger * Fix the paginate helper by using robust mapping lookup [0569187 | Wed Mar 18 19:39:19 UTC 2009] Michael Fellinger * Intelligent mapping prevents Innate from stealing Apps and Controllers [96c3048 | Wed Mar 18 10:47:09 UTC 2009] Michael Fellinger * Making specs pass once again [6e9c26f | Sun Mar 15 20:53:39 UTC 2009] Clive Crous * Add a missing 'protected' forgotten from the spec [14846ae | Sun Mar 15 20:50:48 UTC 2009] Clive Crous * More complete digest header testing [8f4e0f0 | Sun Mar 15 20:32:43 UTC 2009] Clive Crous * Test for httpdigest authentication failures as well [812cdf9 | Sun Mar 15 18:15:42 UTC 2009] Clive Crous * Preload rubygems for spec files if rubygems exists and has been loaded in rake [64033fc | Sun Mar 15 17:59:44 UTC 2009] Clive Crous * Failure feedback when specs completely fail to run [8150206 | Mon Mar 16 00:36:15 UTC 2009] Michael Fellinger * Avoid require of gettext/lib/locale.rb, use locale/lib/locale/tag.rb [fb8a5d6 | Mon Mar 16 00:35:48 UTC 2009] Michael Fellinger * Fix automatic mapping of Controllers [acce95e | Sun Mar 15 16:45:16 UTC 2009] Clive Crous * initial specs for httpdigest helper [e3d9eea | Sun Mar 15 15:28:36 UTC 2009] Clive Crous * Correct MD5 usage namespace [4c7d4b8 | Sun Mar 15 14:02:55 UTC 2009] Clive Crous * Cater for qop(auth-int) as per RFC 2617 section 3.2.3 Conflicts: lib/ramaze/helper/httpdigest.rb [a62f89d | Sun Mar 15 13:26:53 UTC 2009] Clive Crous * Cater for qop(auth-int) as per RFC 2617 section 3.2.3 [a87737c | Sat Mar 14 22:40:28 UTC 2009] Michael Fellinger * Remove cruft from link-helper spec [10a1de1 | Sat Mar 14 22:40:08 UTC 2009] Michael Fellinger * Fix pager and paginate helpers [0d9ca97 | Sat Mar 14 22:39:52 UTC 2009] Michael Fellinger * Introduce Ramaze::App and port to new options system [3194d46 | Fri Mar 13 19:01:05 UTC 2009] Michael Fellinger * Improve the automapping of controllers and add specs for it [e56ccda | Fri Mar 13 18:30:21 UTC 2009] Michael Fellinger * Remove the old spec/helper [6058a6d | Mon Mar 09 22:33:46 UTC 2009] Michael Fellinger * Update chat example [9accf7a | Mon Mar 09 21:49:33 UTC 2009] Michael Fellinger * Remove the rapaste example [3f7c28e | Mon Mar 09 21:48:45 UTC 2009] Michael Fellinger * Rename the *.xhtml templates in spec to *.nag [b47afb3 | Mon Mar 09 21:41:28 UTC 2009] Michael Fellinger * Add deprecation notice for Ramaze::Template [958071d | Mon Mar 09 21:39:36 UTC 2009] Michael Fellinger * Give Ezamar the .xhtml extension for better compatibility [fd177ff | Mon Mar 09 21:38:37 UTC 2009] Michael Fellinger * Add View::Ezamar and specs [b0dd07a | Mon Mar 09 20:33:23 UTC 2009] Michael Fellinger * Add Helper::Localize with spec [5aca5c9 | Mon Mar 09 13:53:06 UTC 2009] Michael Fellinger * Add Request#accept_charset [dce32e5 | Mon Mar 09 12:43:07 UTC 2009] Michael Fellinger * robust_params is not there anymore [68e0778 | Sat Mar 07 14:51:18 UTC 2009] Michael Fellinger * Adapt for refactor of provides in Innate [6af593a | Fri Mar 06 14:12:18 UTC 2009] Michael Fellinger * Put Nagoro::RenderPartial into a separate file [f5af586 | Fri Mar 06 14:11:23 UTC 2009] Michael Fellinger * Reflect the changes to provides in Innate [6104053 | Mon Mar 02 16:22:21 UTC 2009] Michael Fellinger * Remove stub for the contrib/cache_file [7ddc690 | Mon Mar 02 16:21:42 UTC 2009] Michael Fellinger * Update some docs for caches [df1eb37 | Mon Mar 02 16:17:13 UTC 2009] Michael Fellinger * Remove Ramaze::Contrib and add Ramaze::Plugin [cb0f9b2 | Mon Mar 02 16:16:45 UTC 2009] Michael Fellinger * Example for how to serve directories [9820b46 | Mon Mar 02 16:12:32 UTC 2009] Michael Fellinger * Fix the dispatcher specs [02bcaaf | Mon Mar 02 16:06:00 UTC 2009] Michael Fellinger * Convert the contrib/sequel_cache to a proper cache/sequel [6c1bd79 | Mon Mar 02 13:03:02 UTC 2009] Michael Fellinger * Spec for the httpdigest example [154a67b | Mon Mar 02 12:11:22 UTC 2009] Michael Fellinger * Prevent reloader from failing for deprecated caches [88ffe02 | Mon Mar 02 12:10:48 UTC 2009] Michael Fellinger * Improve Helper::HttpDigest and the example, needs specs [ec02dfc | Sun Mar 01 23:21:01 UTC 2009] Michael Fellinger * Compatibility with innate [b22141f | Sat Feb 28 17:09:49 UTC 2009] Michael Fellinger * autoload is useless for gems... add spec for Helper::Maruku [db42768 | Sat Feb 28 17:05:45 UTC 2009] Michael Fellinger * Docs and autoload for Helper::Maruku [bb83296 | Sat Feb 28 16:20:57 UTC 2009] Michael Fellinger * Take care of missing gem method [7908ef6 | Sat Feb 28 16:20:46 UTC 2009] Michael Fellinger * Simplify view invocations [0b7847a | Sat Feb 28 16:11:42 UTC 2009] Michael Fellinger * Fix bug where the name of the haml template was wrong for layouts [ccdb6cc | Sat Feb 28 15:11:00 UTC 2009] Michael Fellinger * pager spec needs hpricot [c131abc | Sat Feb 28 15:10:49 UTC 2009] Michael Fellinger * Ramaze::Helper should behave as Innate::Helper [f333709 | Sat Feb 28 15:10:31 UTC 2009] Michael Fellinger * Spec for Helper::Paginate and fixes to make it work again [b6b7faf | Wed Feb 25 15:34:04 UTC 2009] Michael Fellinger * Put Rack::ETag into vendor to remove rack-contrib dependency [50ce04b | Wed Feb 25 15:00:37 UTC 2009] Michael Fellinger * Use Ramaze::setup to make it easier to use ramaze from git [93e0064 | Wed Feb 25 14:48:34 UTC 2009] Michael Fellinger * New Ramaze::setup, remove contrib/gems [df25a48 | Wed Feb 25 14:18:13 UTC 2009] Michael Fellinger * Fix some helpers that rely on traits [6599dca | Wed Feb 25 14:07:43 UTC 2009] Michael Fellinger * minor cleanup [71107fd | Wed Feb 25 14:07:32 UTC 2009] Michael Fellinger * Fix Helper::Cache trait usage [989be02 | Wed Feb 25 14:07:14 UTC 2009] Michael Fellinger * Remove traits from Object, if you need them include Innate::Traited [b746b70 | Wed Feb 25 14:06:39 UTC 2009] Michael Fellinger * Use Innate::Traited in Controller [855bfea | Wed Feb 25 13:16:30 UTC 2009] Michael Fellinger * Shortcut route with RouteExceptions::[]= [04b6340 | Wed Feb 25 13:15:58 UTC 2009] Michael Fellinger * Adapt to new middleware behaviour [fcbbde5 | Fri Feb 27 16:20:31 UTC 2009] Michael Fellinger * specify what the engine specs need [272a2a5 | Fri Feb 27 13:40:42 UTC 2009] Michael Fellinger * Fix for new Sass [ef952b7 | Thu Feb 26 10:45:02 UTC 2009] Victor Luft * Fixed Sass engine for Haml 2.0.8+ Signed-off-by: Michael Fellinger [b46c3b9 | Wed Feb 25 01:24:47 UTC 2009] Michael Fellinger * Update caching example spec [a6c8667 | Wed Feb 25 01:24:05 UTC 2009] Michael Fellinger * Update caching example [80d6802 | Tue Feb 24 21:42:53 UTC 2009] Michael Fellinger * Update copyright in specs [d4cdad0 | Tue Feb 24 21:40:16 UTC 2009] Michael Fellinger * Fix reference to Innate::Node::NODE_LIST and use CONTROLLER_LIST for Ramaze [07a4b95 | Tue Feb 24 21:37:42 UTC 2009] Michael Fellinger * Use Ramaze::Reloader [e6c5b47 | Tue Feb 24 21:35:59 UTC 2009] Michael Fellinger * Remove Ramaze::Tool [c87e496 | Tue Feb 24 21:35:03 UTC 2009] Michael Fellinger * Remove rest helper, it's awesome but useless [7e1d8ca | Tue Feb 24 21:31:53 UTC 2009] Michael Fellinger * SendFile helper is in Innate [f9c0054 | Tue Feb 24 21:29:39 UTC 2009] Michael Fellinger * change response to returned in the route_exceptions to avoid confusion [3a576a5 | Tue Feb 24 21:28:59 UTC 2009] Michael Fellinger * Use new multipart code from innate [8a34b08 | Sun Feb 22 21:36:14 UTC 2009] Michael Fellinger * Spec for Helper::Gestalt [f92cf13 | Sun Feb 22 21:32:04 UTC 2009] Michael Fellinger * Spec for Helper::Bench [c4314b6 | Sun Feb 22 21:24:43 UTC 2009] Michael Fellinger * Move lib/rack to lib/vendor [2802a39 | Sun Feb 22 20:16:12 UTC 2009] Michael Fellinger * Default engine should be nagoro if none has been set yet in superclasses, also ignores innates default [e2d776c | Sun Feb 22 19:52:53 UTC 2009] Michael Fellinger * Fix typo [3fd92eb | Sun Feb 22 19:41:59 UTC 2009] Michael Fellinger * Deprecate ::cache for now [2af3b20 | Sun Feb 22 19:41:50 UTC 2009] Michael Fellinger * Expand spec for time_diff [9bf8dc5 | Sun Feb 22 01:35:18 UTC 2009] Michael Fellinger * Improved RouteExceptions [ca95b01 | Sun Feb 22 01:16:49 UTC 2009] Michael Fellinger * Require route_exceptions since it has no autoload [9221a70 | Fri Feb 20 16:43:04 UTC 2009] Michael Fellinger * Remove useless method from stack spec [aea363e | Fri Feb 20 16:42:50 UTC 2009] Michael Fellinger * Spec some more of formatting helper [981832e | Fri Feb 20 16:38:13 UTC 2009] Michael Fellinger * Route is in Innate::SingletonMethods now [c601117 | Fri Feb 20 16:22:19 UTC 2009] Michael Fellinger * Remove specs for XSLT until someone is brave enough to implement it again [34afff1 | Fri Feb 20 16:20:24 UTC 2009] Michael Fellinger * Remove markaby specs, use remarkably instead [195a82e | Fri Feb 20 16:18:08 UTC 2009] Michael Fellinger * Remove useless spec helpers [c1ca9ff | Fri Feb 20 16:17:40 UTC 2009] Michael Fellinger * remove old redcloth spec [dcf7499 | Fri Feb 20 16:15:26 UTC 2009] Michael Fellinger * Remove Ramaze::Global related code [282e1e0 | Fri Feb 20 16:12:19 UTC 2009] Michael Fellinger * Update some copyrights and clean specs a bit [0717064 | Fri Feb 20 16:07:56 UTC 2009] Michael Fellinger * Simplify Erubis spec [ac5b921 | Fri Feb 20 16:07:43 UTC 2009] Michael Fellinger * Fix RedCloth engine and add specs [dc9fe30 | Fri Feb 20 15:49:48 UTC 2009] Michael Fellinger * Finally non-sucking support for Liquid [14390d1 | Fri Feb 20 14:58:33 UTC 2009] Michael Fellinger * Remove spec for removed Store::Default [8b43c36 | Fri Feb 20 14:57:54 UTC 2009] Michael Fellinger * Remove spec for Rewrite, covered by Innate [4e414b1 | Fri Feb 20 14:57:09 UTC 2009] Michael Fellinger * Don't use nagoro for stack spec [c433bf8 | Fri Feb 20 14:56:03 UTC 2009] Michael Fellinger * Informer spec more robust [587e7c0 | Fri Feb 20 14:54:30 UTC 2009] Michael Fellinger * Fix helper for snippet specs [5caa271 | Fri Feb 20 14:46:58 UTC 2009] Michael Fellinger * Add specs for error handling and make it so [80ceda6 | Thu Feb 19 19:11:27 UTC 2009] Michael Fellinger * Fix spec for params [51dbc8f | Thu Feb 19 19:11:13 UTC 2009] Michael Fellinger * Remove Tool::Localize [28599a2 | Thu Feb 19 16:29:32 UTC 2009] Michael Fellinger * Remove Ezamar specs [49c0ec5 | Thu Feb 19 16:28:43 UTC 2009] Michael Fellinger * The route spec was ported to innate [91c46a2 | Thu Feb 19 16:27:25 UTC 2009] Michael Fellinger * Remove Dispatcher spec [96d695e | Thu Feb 19 16:26:02 UTC 2009] Michael Fellinger * alias spec_requires to spec_require [3ef2ce1 | Thu Feb 19 16:25:47 UTC 2009] Michael Fellinger * Add spec for integration with Rack::Directory [e5d7b93 | Thu Feb 19 16:11:53 UTC 2009] Michael Fellinger * Update gemspec to reflect new dependencies [d952c02 | Thu Feb 19 16:04:14 UTC 2009] Michael Fellinger * Remove session spec, covered by rack and innate [aaf7df6 | Thu Feb 19 16:03:53 UTC 2009] Michael Fellinger * Use rack-contrib to improve static serving, supports ETag and Last-Modified [7297803 | Thu Feb 19 14:15:36 UTC 2009] Michael Fellinger * Update spec for alias_view [979e75e | Thu Feb 19 13:41:02 UTC 2009] Michael Fellinger * Better spec task [2a426e6 | Thu Feb 19 13:40:46 UTC 2009] Michael Fellinger * Remove spec for session, covered by innate [99bd905 | Thu Feb 19 13:12:14 UTC 2009] Michael Fellinger * Simplify actionless_templates spec a bit [d1f863f | Thu Feb 19 13:11:56 UTC 2009] Michael Fellinger * Move memcache spec into proper directory [eef9170 | Thu Feb 19 13:11:28 UTC 2009] Michael Fellinger * Use ramaze/spec instead of innate/spec [eb22b37 | Thu Feb 19 13:11:07 UTC 2009] Michael Fellinger * Add spec_precondition to deal with specs that require running memcached and the like [163789a | Thu Feb 19 13:10:30 UTC 2009] Michael Fellinger * Fix Controller::engine to register multiple exts per engine [7d147c1 | Wed Feb 18 20:16:23 UTC 2009] Michael Fellinger * Start using some ramaze specific helpers for specs (spec_require) [1d59ffa | Wed Feb 18 20:15:47 UTC 2009] Michael Fellinger * Remove Tool::Localize, have a rack middleware to replace it [ef2ee41 | Wed Feb 18 19:49:50 UTC 2009] Michael Fellinger * params spec passes [32cede3 | Wed Feb 18 14:28:22 UTC 2009] Michael Fellinger * Argument for Ramaze::Reloader#initialize is now optional [bd280b8 | Wed Feb 18 10:31:07 UTC 2009] Tadahiko Uehara * Add spec provide_inheritence.rb. [ed27cb2 | Wed Feb 18 10:28:06 UTC 2009] Tadahiko Uehara * Add defualt provide engine only when controller is not inherited other. [f003e02 | Tue Feb 17 17:34:33 UTC 2009] Michael Fellinger * Fix Helper::Pager and spec [d66195b | Tue Feb 17 03:13:01 UTC 2009] Michael Fellinger * Add ydoc task [629fc79 | Tue Feb 17 03:12:52 UTC 2009] Michael Fellinger * README.markdown => README.md [7602f94 | Tue Feb 17 03:10:49 UTC 2009] Michael Fellinger * Add publish task [249cbf5 | Tue Feb 17 03:09:11 UTC 2009] Michael Fellinger * Fix rake metric:churn [5dd7518 | Sun Feb 15 11:48:01 UTC 2009] Michael Fellinger * Add Ramaze::Fiber#(state|state=) for easier copying [246f3c6 | Sat Feb 14 20:26:56 UTC 2009] Michael Fellinger * Fix Amrita2 [1f6a3e1 | Sat Feb 14 14:20:56 UTC 2009] Michael Fellinger * Response#build shouldn't use its own header by default [8d82a6c | Sat Feb 14 14:08:49 UTC 2009] Michael Fellinger * Fix the 100% cpu problem... seems like hash iteration went wrong [8191be7 | Fri Feb 13 21:24:58 UTC 2009] Pistos * Added more to the post-install message. [13f56f5 | Fri Feb 13 21:13:49 UTC 2009] Pistos * Bumped version to 2009.02. [f73a2b3 | Fri Feb 13 21:13:19 UTC 2009] Pistos * Freshened URLs throughout documentation and examples. [244b7a6 | Fri Feb 13 14:40:48 UTC 2009] Michael Fellinger * Fix strange behaviour when using Fiber [947f1c6 | Fri Feb 13 14:40:30 UTC 2009] Michael Fellinger * Remove cruft [7101ffe | Wed Feb 11 15:46:54 UTC 2009] Michael Fellinger * Improve speed of Helper::User#user method [28dde74 | Wed Feb 11 15:46:34 UTC 2009] Michael Fellinger * Make the R/Rs/A methods a little bit more functional although they are deprecated [c199fc5 | Wed Feb 11 15:45:38 UTC 2009] Michael Fellinger * Add some docs [e3cceef | Wed Feb 11 15:44:37 UTC 2009] Michael Fellinger * Add rake ydoc task [8e953ec | Tue Feb 10 23:58:01 UTC 2009] Michael Fellinger * Ignore some mor ein rcov [21e3e6e | Tue Feb 10 23:32:35 UTC 2009] Michael Fellinger * Make spec for Helper::Form pass [a8566b1 | Tue Feb 10 23:10:24 UTC 2009] Michael Fellinger * Continue rake rcov even on error [6fc5f13 | Tue Feb 10 23:09:54 UTC 2009] Michael Fellinger * General spec for Innate::View [95b228f | Tue Feb 10 23:09:30 UTC 2009] Michael Fellinger * Remove Builder templating engine, too awkward [332409b | Tue Feb 10 23:05:27 UTC 2009] Michael Fellinger * Fix Nagoro and spec it [72ae098 | Tue Feb 10 23:04:08 UTC 2009] Michael Fellinger * Fix Amrita2 and spec it [832ac9a | Tue Feb 10 12:07:02 UTC 2009] Michael Fellinger * Spec Helper::User user with callback [4a2cb9d | Tue Feb 10 09:33:43 UTC 2009] Michael Fellinger * Fix typo [d0cba9c | Mon Feb 09 22:51:16 UTC 2009] Michael Fellinger * Remove specs for some removed snippets [75eda86 | Mon Feb 09 22:50:56 UTC 2009] Michael Fellinger * Add deprecation warning for Helper::Auth#check_auth [838fb4e | Mon Feb 09 22:48:58 UTC 2009] Michael Fellinger * Specs for flashbox [4dc3ca1 | Mon Feb 09 18:50:16 UTC 2009] Michael Fellinger * New Helper::Auth with specs [a95be31 | Mon Feb 09 17:51:44 UTC 2009] Michael Fellinger * Remove spec for Controller, most of that is covered by Innate [8a3efda | Mon Feb 09 17:48:51 UTC 2009] Michael Fellinger * minor update to specs for resolving [67fe2f1 | Mon Feb 09 16:42:11 UTC 2009] Michael Fellinger * Add deprecated Controller::template and update specs [7ce72e3 | Mon Feb 09 16:14:44 UTC 2009] Michael Fellinger * Update spec to show how to define a method like 'other/greet/other' [228e4f2 | Mon Feb 09 16:07:33 UTC 2009] Michael Fellinger * Fix spec for actionless templates [78fbdbf | Mon Feb 09 15:59:14 UTC 2009] Michael Fellinger * Spec for Action#render [c9cda6b | Mon Feb 09 15:58:59 UTC 2009] Michael Fellinger * Layout specs are covered by Innate [d90619f | Mon Feb 09 15:58:30 UTC 2009] Michael Fellinger * Make Ramaze::Cache::MemCache work and add spec [ae9485f | Sun Feb 08 14:51:48 UTC 2009] Michael Fellinger * Better memleak_detector [acaa945 | Sun Feb 08 14:43:07 UTC 2009] Michael Fellinger * Use the Innate::SingletonMethods [5bc49e5 | Sun Feb 08 14:42:50 UTC 2009] Michael Fellinger * Remove Ramaze::(caller_lines|caller_info|parse_backtrace) [e8a062f | Sun Feb 08 12:55:27 UTC 2009] Michael Fellinger * Fix Tool::Localize, would mess up body on 1.9 [4a2318d | Sat Feb 07 17:19:50 UTC 2009] Michael Fellinger * Remove useless specs for Action [ec0f46a | Sat Feb 07 16:00:27 UTC 2009] Michael Fellinger * Adapt Helper::Cache and specs [e4ab521 | Sat Feb 07 12:56:28 UTC 2009] Michael Fellinger * Fix actionless_templates spec [944517c | Sat Feb 07 12:56:11 UTC 2009] Michael Fellinger * Nagoro is default engine [271d1d2 | Sat Feb 07 12:55:53 UTC 2009] Michael Fellinger * A bit of restructuring, add Ramaze.options [1fb7f94 | Fri Feb 06 13:58:30 UTC 2009] Michael Fellinger * Fix user_logout [ecc366e | Fri Feb 06 13:58:00 UTC 2009] Michael Fellinger * Fix reference in flashhelper [caef22c | Thu Feb 05 14:44:43 UTC 2009] Michael Fellinger * Remove specs for Request, they are handled by rack and innate [3a4a478 | Thu Feb 05 14:43:13 UTC 2009] Michael Fellinger * Remove adapter specs, they are handled by rack [bea1233 | Thu Feb 05 14:42:27 UTC 2009] Michael Fellinger * Remove specs for Ezamar [f306bf7 | Thu Feb 05 14:39:21 UTC 2009] Michael Fellinger * Fix specs for Logger::Informer [59ac9f6 | Wed Feb 04 21:40:59 UTC 2009] Michael Fellinger * engine should be inherited [f0aa505 | Tue Feb 03 19:15:10 UTC 2009] Michael Fellinger * Remove spec for action basics [35860c9 | Tue Feb 03 19:14:58 UTC 2009] Michael Fellinger * fix obfuscate_email [e12ce5b | Tue Feb 03 19:14:38 UTC 2009] Michael Fellinger * Pass block to Innate.start [9fe58c7 | Mon Feb 02 16:55:28 UTC 2009] Michael Fellinger * Don't forget to copy instance variables in haml [dc236a1 | Sun Feb 01 03:35:54 UTC 2009] Tadahiko Uehara * Initial layout spec port from ramaze/master. [1f0f025 | Sun Feb 01 03:34:44 UTC 2009] Tadahiko Uehara * Copy action.variables as instance variables before rendering in Haml. [9817184 | Fri Jan 30 21:26:27 UTC 2009] Pistos * Updated copyright year in erubis spec. Signed-off-by: Michael Fellinger [ad26961 | Fri Jan 30 12:04:07 UTC 2009] Pistos * Moved ezamar specs from template/ to view/. No work done on them yet. Signed-off-by: Michael Fellinger [a6dcb6b | Fri Jan 30 11:55:08 UTC 2009] Pistos * Removed commented out legacy Erubis spec code. Signed-off-by: Michael Fellinger [551d5b7 | Fri Jan 30 11:54:36 UTC 2009] Pistos * Erubis "external template" spec passes. Signed-off-by: Michael Fellinger [292ca1c | Fri Jan 30 11:52:06 UTC 2009] Pistos * Erubis "sum" spec passes. Signed-off-by: Michael Fellinger [6cdd63b | Fri Jan 30 11:51:45 UTC 2009] Pistos * Changed Erubis file suffix to rhtml for the spec. Signed-off-by: Michael Fellinger [c6b7851 | Fri Jan 30 11:45:45 UTC 2009] Pistos * Partial work to get erubis specs passing. Not done yet. Signed-off-by: Michael Fellinger [f346dd1 | Fri Jan 30 11:41:23 UTC 2009] Pistos * Haml spec passes just the same, but: corrected typo "remplate" -> "template". Signed-off-by: Michael Fellinger [6ea257b | Fri Jan 30 11:15:12 UTC 2009] Pistos * Changed 'describe' string in Tenjin spec. Looked like a copy-paste artifact. Signed-off-by: Michael Fellinger [73419a5 | Thu Jan 29 18:18:07 UTC 2009] Pistos * Updated copyright years in README and version.rb. [6e23112 | Thu Jan 29 23:27:44 UTC 2009] Michael Fellinger * run specs with total summary [b045591 | Thu Jan 29 23:21:11 UTC 2009] Michael Fellinger * Don't require old ramaze spec helper [3c67a9c | Thu Jan 29 22:05:16 UTC 2009] Michael Fellinger * Remove spec for non-existent Helper::File [ead31a7 | Thu Jan 29 22:04:46 UTC 2009] Michael Fellinger * Controller::engine will now work as expected [fe01c3f | Thu Jan 29 22:03:47 UTC 2009] Michael Fellinger * Innate takes over setup of Controller with better mapping design [a6f716b | Thu Jan 29 22:02:36 UTC 2009] Michael Fellinger * Don't require rubygems [dad4960 | Thu Jan 29 22:01:47 UTC 2009] Michael Fellinger * Update proto for optimal use with ramaze/innate [d5c8877 | Wed Jan 28 23:44:19 UTC 2009] Michael Fellinger * Remove specs for some helpers that are in innnate [a91890d | Wed Jan 28 23:42:42 UTC 2009] Michael Fellinger * Spec fails if it has no tests [83b3736 | Wed Jan 28 23:42:24 UTC 2009] Michael Fellinger * Use request.env instead of STATE [c218850 | Wed Jan 28 23:34:13 UTC 2009] Michael Fellinger * Fix spec for Helper::User [dcdc249 | Wed Jan 28 21:42:16 UTC 2009] Michael Fellinger * Remove old haml specs [0c9950f | Wed Jan 28 21:38:19 UTC 2009] Michael Fellinger * Haml spec should look like the others [0b5363b | Wed Jan 28 21:20:40 UTC 2009] Michael Fellinger * Improve Sass, respect sass_options, port spec [ded1da1 | Wed Jan 28 21:03:09 UTC 2009] Michael Fellinger * Add Helper::Remarkably to restore a tag, to use the a method use the anchor alias instead [b71abe9 | Wed Jan 28 21:01:56 UTC 2009] Michael Fellinger * Improve tenjin specs and remove old ones [38981db | Wed Jan 28 21:01:31 UTC 2009] Michael Fellinger * Remove old tagz specs [e522172 | Wed Jan 28 21:00:09 UTC 2009] Michael Fellinger * Port specs for Remarkably and make them pass [1a1e0c6 | Wed Jan 28 20:32:02 UTC 2009] Michael Fellinger * Clean up spec for Tagz [8b9bf7a | Wed Jan 28 20:19:57 UTC 2009] Michael Fellinger * Nifty hack makes Tenjin work with binding [ad4e2d1 | Wed Jan 28 20:19:38 UTC 2009] Michael Fellinger * Deprecate Link::R/Rs/A [c385741 | Wed Jan 28 20:19:23 UTC 2009] Michael Fellinger * Helper::DEFAULT is removed [9483344 | Wed Jan 28 20:18:57 UTC 2009] Michael Fellinger * Make View::Tagz and its specs work [a27e324 | Tue Jan 27 21:56:19 UTC 2009] Michael Fellinger * Some more specs [1b91119 | Tue Jan 27 21:55:40 UTC 2009] Michael Fellinger * Add spec for Ramaze::Struct [95a59e2 | Tue Jan 27 21:53:49 UTC 2009] Michael Fellinger * Improve tasks for spec/rcov [f980ec8 | Tue Jan 27 21:53:13 UTC 2009] Michael Fellinger * Faster specs for snippets [c1a5a63 | Tue Jan 27 21:52:42 UTC 2009] Michael Fellinger * Remove Ramaze::State, handled by Innate [91b0830 | Tue Jan 27 21:52:03 UTC 2009] Michael Fellinger * Dictionary => Ramaze::Dictionary and use its specs [6228aab | Tue Jan 27 21:51:04 UTC 2009] Michael Fellinger * Improve Helper::XHTML and add specs [5bbd8c1 | Tue Jan 27 21:50:22 UTC 2009] Michael Fellinger * Improve Helper::Stack [c81a208 | Tue Jan 27 21:49:49 UTC 2009] Michael Fellinger * Improve Helper::SimpleCaptcha [f746491 | Tue Jan 27 21:48:57 UTC 2009] Michael Fellinger * Helper::Redirect moved to Innate [b3fb411 | Tue Jan 27 21:46:13 UTC 2009] Michael Fellinger * Minor realign [a6adee6 | Tue Jan 27 21:45:22 UTC 2009] Michael Fellinger * Helper::Aspect moved to Innate [fd5c5ee | Tue Jan 27 21:44:57 UTC 2009] Michael Fellinger * comment out debugging section in sequel/relation [2a0832f | Tue Jan 27 21:44:34 UTC 2009] Michael Fellinger * Remove Helper::DEFAULT [d90bf2a | Tue Jan 27 21:43:57 UTC 2009] Michael Fellinger * Better mapping of controllers [f7568c0 | Tue Jan 27 21:43:23 UTC 2009] Michael Fellinger * Add Controller to setup [76c8b4a | Sun Jan 25 02:06:33 UTC 2009] Michael Fellinger * Show more examples of configuring flashbox [ec0ab78 | Sun Jan 25 01:41:39 UTC 2009] Michael Fellinger * Fix bug uncovered by innate specs [9874515 | Sat Jan 17 16:56:51 UTC 2009] Michael Fellinger * Check for value_cache method instead of direct [def02c5 | Sat Jan 17 14:24:34 UTC 2009] Michael Fellinger * Ramaze::BASEDIR is deprecated [6c48668 | Sat Jan 17 12:46:17 UTC 2009] Michael Fellinger * Better code style for sourceview [44f7f80 | Sat Jan 17 12:39:01 UTC 2009] Michael Fellinger * A bit more conventional sourceview [23592e3 | Fri Jan 16 10:59:00 UTC 2009] Michael Fellinger * s/\t/ /g [1c2b4e6 | Thu Jan 15 21:49:54 UTC 2009] Michael Fellinger * Remove Helper::CGI, now in Innate [cb7d4a3 | Thu Jan 15 21:49:40 UTC 2009] Michael Fellinger * Pointer to Innate::Helper::LOOKUP [729a817 | Thu Jan 15 21:49:06 UTC 2009] Michael Fellinger * Naive implementation of Controller:engine [34a917f | Thu Jan 15 21:48:41 UTC 2009] Michael Fellinger * Avoid double definition of ROOT [b0a5bcc | Fri Sep 12 00:27:20 UTC 2008] sean * fixed https redirect [7be5403 | Tue Jan 13 22:43:03 UTC 2009] Michael Fellinger * Update gemspec [6b10ef8 | Mon Jan 12 22:59:58 UTC 2009] Pistos * Updated Ramaze::VERSION to 2009.01. Signed-off-by: Michael Fellinger [674943e | Mon Jan 12 09:59:58 UTC 2009] Pistos * Updated Ramaze::VERSION to 2009.01. [0dd410a | Sat Jan 10 16:00:18 UTC 2009] Michael Fellinger * Use Innate::Route [0577e1d | Thu Jan 08 09:01:07 UTC 2009] Michael Fellinger * Default helpers for markaby helper [d454345 | Wed Jan 07 22:01:27 UTC 2009] Michael Fellinger * Remove stuff from Ramaze::Request that's in Innate [a35e150 | Wed Jan 07 22:01:05 UTC 2009] Michael Fellinger * Improve constant setting [9de7834 | Wed Jan 07 21:33:21 UTC 2009] Michael Fellinger * Slightly different semantics for Response#build [b27733b | Wed Jan 07 21:24:11 UTC 2009] Michael Fellinger * Routes use a class instance variable now [15a775b | Wed Jan 07 21:23:27 UTC 2009] Michael Fellinger * Ramaze::Current has equivalent in Innate [44ccbb6 | Wed Jan 07 21:12:59 UTC 2009] Michael Fellinger * Remove Trinity, it's in Innate [6e2a80c | Wed Jan 07 21:12:44 UTC 2009] Michael Fellinger * Assign Innate constants into Ramaze module [0b84f3d | Wed Jan 07 20:54:11 UTC 2009] Michael Fellinger * Remove session stuff, handled by Innate now [b3b7158 | Wed Jan 07 20:53:23 UTC 2009] Michael Fellinger * Remove old error classes [c2642e8 | Wed Jan 07 20:29:10 UTC 2009] Michael Fellinger * Rename Ramaze::MemcachedCache to Ramaze::Cache::MemCache and adapt it to new API [d36cff8 | Wed Jan 07 20:28:12 UTC 2009] Michael Fellinger * Cache management is in Innate as well [74ed774 | Wed Jan 07 20:27:59 UTC 2009] Michael Fellinger * Remove caches present in Innate [a9b1f58 | Wed Jan 07 19:15:17 UTC 2009] Michael Fellinger * Remove old Controller code [302f414 | Wed Jan 07 19:03:21 UTC 2009] Michael Fellinger * Helper::Partial moves to Innate [7dc778c | Wed Jan 07 11:08:46 UTC 2009] Michael Fellinger * We don't ship bacon [a1cc878 | Wed Jan 07 03:15:46 UTC 2009] Pistos * Changed @routed (in Ramaze::Controller << self ) to be Thread.current[ :routed ] concurrent hits, the @routed variable would get shared among threads, leading to values that did not reflect reality. This caused routing to fail about 1 to 10 times per 10000 requests. Signed-off-by: Michael Fellinger [e3df9f7 | Tue Jan 06 14:15:46 UTC 2009] Pistos * Changed @routed (in Ramaze::Controller << self ) to be Thread.current[ :routed ] concurrent hits, the @routed variable would get shared among threads, leading to values that did not reflect reality. This caused routing to fail about 1 to 10 times per 10000 requests. [a298997 | Tue Jan 06 13:59:34 UTC 2009] Pistos * More robust "create table" block for blog example and wikore example. [f931e37 | Wed Jan 07 02:08:20 UTC 2009] Michael Fellinger * Some changes to logging [f12c80e | Mon Jan 05 22:23:52 UTC 2009] Michael Fellinger * Remove Ramaze::Tool::MIME [ebd59e9 | Mon Jan 05 22:22:50 UTC 2009] Michael Fellinger * Remove Ramaze::Action [c5671f5 | Mon Jan 05 22:21:29 UTC 2009] Michael Fellinger * Remove Ramaze::Template [8858447 | Mon Jan 05 22:20:25 UTC 2009] Michael Fellinger * Remove Store::Default [03f39af | Mon Jan 05 22:19:56 UTC 2009] Michael Fellinger * Remove adapters [8d2893d | Mon Jan 05 22:17:22 UTC 2009] Michael Fellinger * Remove cruft and Dispatcher [1e189b5 | Mon Jan 05 22:13:55 UTC 2009] Michael Fellinger * Now with render_template [0f82d64 | Mon Jan 05 21:25:54 UTC 2009] Michael Fellinger * Use innates spec helper for now [82b48cd | Mon Jan 05 21:25:35 UTC 2009] Michael Fellinger * Fix RenderPartial [aaf45ea | Mon Jan 05 21:25:14 UTC 2009] Michael Fellinger * Use voodoo DEFAULT helper detection [42d7c03 | Mon Jan 05 21:04:02 UTC 2009] Michael Fellinger * Add Nagoro::Pipe::RenderPartial and make pipes optional [c22f658 | Mon Jan 05 21:03:33 UTC 2009] Michael Fellinger * Port render_partial [e5ea642 | Mon Jan 05 21:02:53 UTC 2009] Michael Fellinger * gestalt is in ramaze [a4159a7 | Mon Jan 05 21:02:36 UTC 2009] Michael Fellinger * Example for RenderPartial of nagoro [265f460 | Mon Jan 05 21:02:09 UTC 2009] Michael Fellinger * Don't use mongrel in linking example [3e8837b | Mon Jan 05 21:01:57 UTC 2009] Michael Fellinger * Improve gestalt example [ebbf47e | Mon Jan 05 21:01:36 UTC 2009] Michael Fellinger * Port the element example to nagoro [a9543a9 | Mon Jan 05 20:10:54 UTC 2009] Michael Fellinger * adapt basic/linking example [08280a4 | Mon Jan 05 20:09:39 UTC 2009] Michael Fellinger * Fix templating engine lookup [e4de128 | Mon Jan 05 19:06:32 UTC 2009] Michael Fellinger * Add a couple of engines and improve the others [ffab0f3 | Mon Jan 05 18:16:04 UTC 2009] Michael Fellinger * Move templating engines with dependencies from Innate to Ramaze [ef8a665 | Sun Jan 04 11:25:07 UTC 2009] Michael Fellinger * First rough cut of Ramaze on Innate [121f7be | Thu Jan 01 11:51:47 UTC 2009] Michael Fellinger * Use path_info instead of request_path [46abb06 | Tue Dec 30 19:39:07 UTC 2008] Pistos * Adjusted post_install_message not to mention ramaze --create, Added rubyforge_project. [e633436 | Sat Dec 27 18:56:07 UTC 2008] Michael Fellinger * Correct docs for Request#subset [440f6ec | Fri Dec 26 16:53:29 UTC 2008] Michael Fellinger * Global.file_cache may now be a String to indicate where to cache actions [440e793 | Fri Dec 26 16:49:29 UTC 2008] Michael Fellinger * Make inotify work consistently and without memory leaks [42a7b04 | Wed Dec 24 23:37:15 UTC 2008] Michael Fellinger * Fix gemspec [3f75222 | Wed Dec 24 15:42:22 UTC 2008] Michael Fellinger * Split watchers into separate files, only load what we need [64d6b21 | Wed Dec 24 15:36:09 UTC 2008] Michael Fellinger * Delegate cooldown to watchers [21088c8 | Wed Dec 24 15:29:08 UTC 2008] Michael Fellinger * Improve coding style of file_watcher [135eeba | Wed Dec 24 15:04:22 UTC 2008] Michael Fellinger * Add Helper::Bench [48934a8 | Mon Dec 22 13:01:13 UTC 2008] Aki Reijonen * update comments on Ramaze::Reloader Signed-off-by: Michael Fellinger [08d8923 | Mon Dec 22 12:43:23 UTC 2008] Aki Reijonen * make InotifyFileWatcher work better Signed-off-by: Michael Fellinger [369b215 | Mon Dec 22 11:52:36 UTC 2008] Aki Reijonen * move FileWatchers from Ramaze to Ramaze::Reloader Signed-off-by: Michael Fellinger [eca26ad | Mon Dec 22 11:51:19 UTC 2008] Aki Reijonen * preliminary version of InotifyFileWatcher for reloader Signed-off-by: Michael Fellinger [deddbfe | Mon Dec 22 11:28:12 UTC 2008] Aki Reijonen * split reloader's file watcher to StatFileWatcher Signed-off-by: Michael Fellinger [bcde22a | Sat Dec 20 15:48:39 UTC 2008] Aki Reijonen * fix a typo in comments at lib/ramaze/contrib/sequel/image.rb Signed-off-by: Michael Fellinger [5af7575 | Fri Dec 19 12:10:48 UTC 2008] Michael Fellinger * Fix gemspec [ce75e8e | Fri Dec 19 12:09:50 UTC 2008] Michael Fellinger * Update gemspec for Version 2008.12 [f871f8a | Mon Dec 15 18:15:58 UTC 2008] Michael Fellinger * Fix logic error in session [5b66538 | Mon Dec 15 18:15:31 UTC 2008] Michael Fellinger * FileCache shouldn't be a singleton [163684e | Mon Dec 15 17:53:46 UTC 2008] Michael Fellinger * A little bit better coding style for session [0f04f64 | Mon Dec 15 17:53:24 UTC 2008] Michael Fellinger * Move FileCache out of contrib into ramaze/cache/file, add autoload, unify style [65bcc88 | Mon Dec 15 17:50:12 UTC 2008] Michael Fellinger * Always persist session on access (quickfix) [9bf573a | Sun Dec 14 12:07:16 UTC 2008] Michael Fellinger * Request#params should just use super [31d96a4 | Sun Dec 14 12:06:14 UTC 2008] Michael Fellinger * Add some docs and an example of how to use ezamar RenderPartial [b98f5ff | Fri Dec 12 13:30:22 UTC 2008] Michael Fellinger * Hardcode default redirect status, rack changed name [31baec5 | Wed Dec 03 22:52:52 UTC 2008] Andreas Karlsson * Fix for random overwrite of referrer in MockHTTP. This bug caused :referrer to be randomly over written by nil from not set :referer, or the other way round depending on order the hash was iterated over. As a side effect we also get rid of various HTTP_* set to null when missing from the query hash. Also fix incorrect indentation in the make_query function; tabs converted to spaces. [f46f866 | Mon Dec 01 23:41:14 UTC 2008] Michael Fellinger * proper gravatar escaping [4d2d836 | Sat Nov 29 16:41:11 UTC 2008] Michael Fellinger * docs and improvments for redirect_referrer [4eb3584 | Sat Nov 29 16:40:54 UTC 2008] Michael Fellinger * Docs for to_ivs [76d560b | Sat Nov 29 14:18:08 UTC 2008] Michael Fellinger * Remove another usage of String#/ [77e9403 | Fri Nov 28 23:45:49 UTC 2008] Michael Fellinger * Remove blog.db [4a6c90c | Mon Jun 16 22:14:45 UTC 2008] Riku Raisaenen * Added documentation as well as I could, rdoc coverage up from 78 to 80 or so. [ee1e340 | Thu Nov 27 20:17:02 UTC 2008] Michael Fellinger * more specific errors for Helper [c7fb57b | Wed Dec 17 13:30:58 UTC 2008] Aman Gupta * Fix Numeric#years [612f37f | Tue Dec 09 22:57:13 UTC 2008] Vincent Roy * Change to File.join because String#/ is deprecated Signed-off-by: Michael Fellinger [815975d | Wed Dec 03 22:52:52 UTC 2008] Andreas Karlsson * Fix for random overwrite of referrer in MockHTTP. This bug caused :referrer to be randomly over written by nil from not set :referer, or the other way round depending on order the hash was iterated over. As a side effect we also get rid of various HTTP_* set to null when missing from the query hash. Also fix incorrect indentation in the make_query function; tabs converted to spaces. [7e4fbba | Mon Dec 01 23:41:14 UTC 2008] Michael Fellinger * proper gravatar escaping [8910f17 | Sat Nov 29 16:41:11 UTC 2008] Michael Fellinger * docs and improvments for redirect_referrer [2455cd2 | Sat Nov 29 16:40:54 UTC 2008] Michael Fellinger * Docs for to_ivs [e20ba11 | Sat Nov 29 14:18:08 UTC 2008] Michael Fellinger * Remove another usage of String#/ [09e51c6 | Fri Nov 28 23:45:49 UTC 2008] Michael Fellinger * Remove blog.db [1d1e226 | Mon Jun 16 22:14:45 UTC 2008] Riku Raisaenen * Added documentation as well as I could, rdoc coverage up from 78 to 80 or so. [6ab9064 | Thu Nov 27 20:17:02 UTC 2008] Michael Fellinger * more specific errors for Helper [4909f01 | Tue Nov 25 14:41:56 UTC 2008] Clive Crous * Add method handlers for fetching passwords in httpdigest helper, also optimized slightly and now validate opaque. Example updated to show more ways of using httpdigest including login form 'override' [4a4da0b | Fri Nov 21 09:57:05 UTC 2008] Michael Fellinger * Don't map Controller to / [da2ac82 | Thu Nov 20 14:14:45 UTC 2008] Michael Fellinger * More accurate warning for Helper::User if model has no class method ::authenticate [f929291 | Thu Nov 20 14:14:14 UTC 2008] Michael Fellinger * Remove further occurences of String#/ [cf94d60 | Sun Aug 24 22:29:24 UTC 2008] Colin Shea * Added JS Hack to rapaste: Double clicking on the box in a paste causes the line numbers to toggle visibility. This is *very* slow, due to the fact that jQuery has to toggle the visibility of each line number instead of a parent element. [7fb99d3 | Mon Nov 17 13:33:56 UTC 2008] Michael Fellinger * Fix docs for Helper::User [e12ea27 | Mon Nov 17 13:33:43 UTC 2008] Michael Fellinger * Give information about location where deprecated method is being used [d88b019 | Mon Nov 17 13:33:17 UTC 2008] Michael Fellinger * Deprecate String#/ and Symbol#/ and remove most usage of it [1dd272c | Mon Nov 17 13:31:30 UTC 2008] Michael Fellinger * Remove specs for divide, move acquire spec to Ramaze [8afb9c7 | Mon Nov 17 13:18:39 UTC 2008] Michael Fellinger * Thread ID may be negative [94d14f1 | Mon Nov 17 13:11:03 UTC 2008] Michael Fellinger * Remove contrib/auto_params [a6c24f7 | Sun Nov 16 18:58:30 UTC 2008] Michael Fellinger * Deprecate Object#acquire and move to Ramaze::acquire [f46ffc6 | Sun Nov 16 18:54:28 UTC 2008] Michael Fellinger * Remove usage of acquire in proto [3966362 | Thu Oct 30 11:07:33 UTC 2008] Michael Fellinger * call #to_hash on options passed to Ramaze.start [c4e3be2 | Thu Nov 13 08:58:42 UTC 2008] Gavin Kistner * Create projects even when HOME environment variable not set (e.g. Windows) [2f59f9a | Sun Nov 09 13:17:03 UTC 2008] Clive Crous * Correct usage of uuid within httpdigest helper [8bd44a8 | Fri Oct 31 15:08:17 UTC 2008] Andrew Farmer * Arguments to an action were left out of the urls built by paginate helper. [8dd792c | Wed Oct 29 10:02:04 UTC 2008] Michael Fellinger * Version 2008.10 [be6e232 | Thu Oct 16 23:15:02 UTC 2008] Michael Fellinger * Fix localization [17c819f | Wed Oct 08 04:24:14 UTC 2008] Michael Fellinger * Rescue in rapaste [4313c83 | Sun Aug 10 09:59:42 UTC 2008] Michael Fellinger * Fix port for serving rapaste [70f4b7c | Sun Oct 05 11:30:40 UTC 2008] Michael Fellinger * Simplify Request#[] [ed5b2e3 | Tue Sep 23 10:12:25 UTC 2008] Clive Crous * add a logout method for forcing a user to re-login and allowed the ability to override the login failure response type (eg to a custom login page instead of unauthorized default) [d967b0b | Sun Sep 14 10:28:19 UTC 2008] Lars Olsson * Signed-off-by: Lars Olsson RotatingInformer is a new Logger class based on Informer that creates multiple logs based on time. [4c6999a | Fri Sep 12 13:38:39 UTC 2008] Aman Gupta * make tagcloud helper 1.8.6 compatible [e714bce | Fri Sep 12 13:38:26 UTC 2008] Aman Gupta * use metaprogramming instead of method_missing in OrderedSet [bd417fc | Fri Sep 12 13:34:05 UTC 2008] Aman Gupta * fix auto_params spec [85724c1 | Fri Sep 12 05:46:16 UTC 2008] Keita Yamaguchi * Fixed for 1.9 syntax [6467d01 | Wed Sep 10 10:14:00 UTC 2008] Michael Fellinger * Update ramaze.gemspec [81ab66b | Wed Sep 10 10:13:02 UTC 2008] Michael Fellinger * Update ramaze.gemspec [c03b943 | Wed Sep 10 10:12:22 UTC 2008] Michael Fellinger * Update CHANGELOG [8702e0f | Wed Sep 10 10:09:52 UTC 2008] Michael Fellinger * Version 2008.09 [106b8a3 | Wed Sep 10 10:09:07 UTC 2008] Michael Fellinger * Update ramaze.gemspec [addf767 | Sun Sep 07 18:43:29 UTC 2008] Michael Fellinger * Remove warning on non-existing file in Reloader [faea9db | Tue Sep 09 14:27:32 UTC 2008] Ryan Grove * Remove unsuppressable debug message. [1eae588 | Sat Aug 30 14:12:18 UTC 2008] Michael Fellinger * Fix Response#body, Rack has Content-Length [29f622d | Sat Aug 30 11:51:33 UTC 2008] Michael Fellinger * Remove Symbol#to_proc, it's in 1.8.7 anyway [59317d0 | Sat Aug 30 07:47:09 UTC 2008] Michael Fellinger * Last remaining 'module Dispatcher' [d6f7114 | Sat Aug 30 07:46:06 UTC 2008] Michael Fellinger * Fix basic auth spec and use Response#write [5e843f1 | Thu Aug 28 21:26:03 UTC 2008] Michael Fellinger * Make Rake::Deflater not a default middleware [27ec880 | Wed Aug 27 21:45:41 UTC 2008] Michael Fellinger * Remove check from Symbol#to_proc [6a9196f | Wed Aug 27 17:59:53 UTC 2008] Michael Fellinger * Ramaze::Current and Ramaze::Dispatcher middleware * Major refactor turning Ramaze into a fully middleware-based framework, this allows us to use just about any existing Rack middleware without patching. * Ramaze::Current and Ramaze::Dispatcher become classes [f361811 | Thu Aug 28 15:25:59 UTC 2008] Michael Fellinger * Fix `ramaze --console` [dcecbc5 | Thu Aug 28 15:25:34 UTC 2008] Michael Fellinger * Don't daemonize by default for bin/ramaze [eec2806 | Wed Aug 27 17:55:21 UTC 2008] Michael Fellinger * Add __FILE__ to reloader files [3530019 | Wed Aug 27 17:54:52 UTC 2008] Michael Fellinger * Minor refactor of gzip_filter [cdc3295 | Wed Aug 27 12:12:09 UTC 2008] Michael Fellinger * Move STATUS_CODES into lib/ramaze.rb [11931b7 | Wed Aug 27 12:11:31 UTC 2008] Michael Fellinger * OrderedSet::[] as alias to ::new [3f1cc4f | Wed Aug 27 11:02:22 UTC 2008] Michael Fellinger * Minor changes to gzip_filter * Document option setting * Enable gzip filter for text/.* to allow css/html/js [cdd54ee | Wed Aug 27 08:04:32 UTC 2008] Michael Fellinger * Force PATH expansion in ProjectCreator [bf16630 | Mon Aug 25 21:42:37 UTC 2008] Michael Fellinger * Use UltraViolet to highlight tutorial * There are several hacks used to achieve this, but the static html is now generated by Uv and you won't have to generate it yourself. Just see doc/tutorial/todolist.html for a visual treat. * Adds textpow syntax for ezamar, should also be usable for the people using textmate, someone should try it, i don't have TM. * Adds contrib/maruku_uv.rb - a monkeypatch to MaRuKu to make it use Uv instead of the syntax gem [a65df71 | Mon Aug 25 20:24:16 UTC 2008] Michael Fellinger * Update lib/proto [f1c2501 | Mon Aug 25 20:23:24 UTC 2008] Michael Fellinger * Remove rammit example [bbfd05b | Sun Aug 24 14:34:08 UTC 2008] Michael Fellinger * Add ProjectCreator for `ramaze --create` [d97d31f | Sat Aug 23 13:54:17 UTC 2008] Michael Fellinger * Add regression spec for tagcloud [e9258f0 | Sat Aug 23 13:50:43 UTC 2008] Michael Fellinger * Further changes to paginate helper * #navigation takes optional parameter to limit number of pages listed * @page is adjusted to ensure valid range [414f352 | Sat Aug 23 13:50:19 UTC 2008] Michael Fellinger * Add tagcloud to Helper::Formatting [29d7f72 | Thu Aug 21 11:21:39 UTC 2008] Michael Fellinger * Paginate doesn't allow negative page number [70b3bc1 | Thu Aug 21 11:16:05 UTC 2008] Michael Fellinger * Paginate fix page number larger than max [acc76de | Sat Aug 16 22:05:14 UTC 2008] Michael Fellinger * Move extensions to ruby core into own module * Moved into Ramaze::CoreExtensions * Included into appropriate class on startup * Remove unused or broken snippets * Warn and don't extend on collision of method names * Move Kernel snippets that belong into Object into the correct place [758142c | Fri Aug 22 21:27:20 UTC 2008] Michael Fellinger * Remove sourcereload.rb for good [7fdcee9 | Mon Aug 18 17:13:40 UTC 2008] Cheah Chu Yeow * Allow auto_link formatting helper to actually take a block argument as documented. [0b431e9 | Tue Aug 12 19:54:15 UTC 2008] Michael Fellinger * Pager obtains correct Action and calls @var.to_s [7a56250 | Tue Aug 12 19:20:33 UTC 2008] Michael Fellinger * Minor bugfix and lots of docs for paginate helper [8ed7215 | Tue Aug 12 15:50:59 UTC 2008] Michael Fellinger * Remove note of cropped_thumbnail [0f33197 | Tue Aug 12 15:20:09 UTC 2008] Michael Fellinger * Update ramaze.gemspec [1f479c6 | Tue Aug 12 15:19:19 UTC 2008] Michael Fellinger * Gemspec manifest sorted and exclude /tags file [0dc2fed | Tue Aug 12 15:12:04 UTC 2008] Michael Fellinger * Add release:gemspec-prepare task * Creates a new gemspec based on current repository [2a74c0d | Tue Aug 12 14:58:03 UTC 2008] Michael Fellinger * Update ramaze.gemspec [1e68e13 | Tue Aug 12 14:48:31 UTC 2008] Michael Fellinger * Add contrib/sequel/form_field.rb * Simply generate one form field for a given model instance attribute. [546ae80 | Tue Aug 12 14:47:54 UTC 2008] Michael Fellinger * Add contrib/sequel/relation.rb * Helps with your Relationship management [2833696 | Tue Aug 12 14:47:28 UTC 2008] Michael Fellinger * Add contrib/sequel/create_join.rb [f6eceaa | Tue Aug 12 14:47:05 UTC 2008] Michael Fellinger * Add contrib/sequel/image.rb [5663881 | Tue Aug 12 14:44:19 UTC 2008] Michael Fellinger * Add Helper::Paginate and example * Paginates both Array and Sequel datasets [f7e8c33 | Mon Aug 11 16:14:42 UTC 2008] Michael Fellinger * Allow spec as value for Global.mode [6fb2d0d | Mon Aug 11 14:58:23 UTC 2008] Clive Crous * Set error_page due to expected 404 for missing actions [08e29ff | Sun Aug 10 18:46:19 UTC 2008] Clive Crous * Minor grammatical correction within a comment. [2ec0054 | Sun Aug 10 13:59:32 UTC 2008] Clive Crous * Update gemspec to add missing files as detected by check_gemspec task [e60f47b | Sun Aug 10 13:56:26 UTC 2008] Clive Crous * Add a rake task `check_gemspec` for finding missing or extra files within the gemspec definition [c546935 | Sun Aug 10 13:16:19 UTC 2008] Clive Crous * Add reloader.rb and state.rb to gemspec [5ce8505 | Sun Aug 10 18:45:17 UTC 2008] Michael Fellinger * Add Session::Flash#(merge|merge!) [2d2f3b5 | Sun Aug 10 18:24:42 UTC 2008] Michael Fellinger * Fix wrong variable in ramaze/setup.rb [1fa2e63 | Sun Aug 10 11:50:08 UTC 2008] Clive Crous * Cleanup gemspec after Use Ramaze::STATE instead of Thread.current [faa9fae | Sun Aug 10 17:03:34 UTC 2008] Michael Fellinger * RaPaste serves text/html with id.html | html/id [b8da247 | Sun Aug 10 16:02:42 UTC 2008] Michael Fellinger * Remove trailing useless slash [1fb806a | Sun Aug 10 15:58:01 UTC 2008] Michael Fellinger * Point to github from sourceview [dabc5b8 | Sun Aug 10 10:08:45 UTC 2008] Michael Fellinger * Use Ramaze::STATE instead of Thread.current * Assign value by STATE[key] = value * Retrieve value by STATE[key] * Check for key by STATE.key?(key) [5c1192f | Sun Aug 10 09:32:24 UTC 2008] Michael Fellinger * Introduce Ramaze::State | Ramaze::Fiber | Fiber * This should provide a mostly compatible way to do fibers on 1.9 and 1.8, but still relies on Thread on 1.8. [4a12355 | Sun Aug 10 01:05:52 UTC 2008] Michael Fellinger * Reloader::Log instead of Ramaze::Log [5102a73 | Sun Aug 10 00:59:42 UTC 2008] Michael Fellinger * Fix specs regarding error status. [88441a4 | Sun Aug 10 00:36:36 UTC 2008] Michael Fellinger * Fix custom error pages. * To get racks error pages now set Global.error_page = false [8241a31 | Sun Aug 10 00:22:55 UTC 2008] Michael Fellinger * Minor change for rtags support, no 'alias :b :a' [6031965 | Sat Aug 09 17:38:37 UTC 2008] Michael Fellinger * Add Ramaze::Reloader and Global.middleware = true * Global.middleware is now true by default: * Don't pull yet if you need custom error pages! * Error pages are handled by Rack::ShowExceptions * Add Ramaze::Reloader: * Implemented as Rack middleware * Reloads only on requests, keeps your CPU at 0 * Reloader::OPTIONS[:thread] = true will use an exclusive thread for reloading, by default no threads are used. * Reloader::OPTIONS[:control] allows you to hook into #call and use your own way to run #cycle, useful for EventMachine * Reloader::OPTIONS[:cooldown] is set by Global.sourcereload, same behaviour as before * Only one stat(2) per path, lower disk usage * Can still be used independent of Ramaze as no traits or ramazisms are used [d345e50 | Sat Aug 09 15:34:51 UTC 2008] Michael Fellinger * Fix some docs in Adapter::Base [e31fdb2 | Fri Aug 01 13:34:42 UTC 2008] Michael Fellinger * Add Helper::Ultraviolet [9dd7de9 | Fri Aug 01 12:59:03 UTC 2008] Michael Fellinger * Add gem task and set default task to spec [97fb8c7 | Fri Aug 01 12:23:21 UTC 2008] Michael Fellinger * Gestalt builds an Array and joins at the end [1e80330 | Fri Aug 01 12:22:30 UTC 2008] Michael Fellinger * Fix file list in gemspec [c82a540 | Fri Aug 01 12:22:15 UTC 2008] Michael Fellinger * Bump Version to 2008.08 [fe3235f | Fri Aug 01 12:21:09 UTC 2008] Michael Fellinger * Add Tool::MIME::ext_for(mime) [480a70f | Tue Aug 05 23:18:28 UTC 2008] Andrew Farmer * Fixed bug where index actions with arguments were improperly file-cached, and added specs to test. [5ee03ff | Wed Jul 30 17:32:29 UTC 2008] Michael Fellinger * Controller::view_root at old state, unbreak specs [6b13b54 | Wed Jul 30 08:02:41 UTC 2008] Sam Carr * Improve action method resolving with respect to Helper::LOOKUP. Now the action method resolving only considers helper methods where the helper is in Helper::LOOKUP and is included by the controller in question. Previously all methods of all helpers in Helper::LOOKUP were deemed to be available on all controllers whether they included the helpers or not, which was wrong. [6e5ead9 | Tue Jul 29 11:09:17 UTC 2008] Michael Fellinger * Subclass Helper::User::Wrapper from BlankSlate [5da248d | Tue Jul 29 11:04:28 UTC 2008] Michael Fellinger * Fix missing Controller::view_root when unrouted * This occured when you haven't been on the target controller yet. For example right after startup trying to MainController obtain FooController.view_root will return nil although when visiting FooController before the routing would set a default. * The default is now set directly in Controller::view_root [72b0669 | Tue Jul 29 08:19:44 UTC 2008] Clive Crous * Include thread helper in gemspec [49660ce | Mon Jul 28 14:26:16 UTC 2008] Clive Crous * Clarify exception rescue code within thread helper [24cf2d9 | Mon Jul 28 14:17:01 UTC 2008] Clive Crous * Add a thread helper for cleaner thread exceptions [28f90e2 | Thu Jun 19 12:42:44 UTC 2008] Sam Carr * Updates Memcached comments to recognise why get_multi may not be available. [8ebf919 | Mon Jul 21 08:23:30 UTC 2008] Sam Carr * Allow controller subclasses to pick up template mappings defined in superclasses. I noticed that if I define a template mapping with the template method, subclasses of the defining controller do not respect that mapping. This only really applies to the template :foo, :bar usage, where no explicit controller is specified. With these modifications, template mappings such as that will assume you mean the 'current' controller. Specs have been added to test this new functionality. [155b9a4 | Mon Jul 21 16:28:45 UTC 2008] Michael Fellinger * Update announcement for 2008.07 (partial) [53c7947 | Mon Jul 21 16:27:46 UTC 2008] Michael Fellinger * Only escape # with h() where needed [f89652a | Mon Jul 21 16:27:03 UTC 2008] Michael Fellinger * More info on problems in Helper::User [5497329 | Mon Jul 21 16:26:15 UTC 2008] Michael Fellinger * Controller::map(nil) shouldn't map to '' [922f993 | Fri Jul 04 19:51:11 UTC 2008] Michael Fellinger * Add Ramaze::Template::Maruku [ae6a3af | Fri Jul 04 19:50:38 UTC 2008] Michael Fellinger * Add Helper::Formatting::obfuscate_email [ff5343a | Sun Jul 20 14:32:36 UTC 2008] Michael Fellinger * Slight reformat of Request#ip method [959ff55 | Thu Jul 17 09:13:18 UTC 2008] Matt Rubens * Request#ip always returns last ip in X_FORWARDED_FOR [8499c05 | Thu Jul 10 14:27:54 UTC 2008] Aman Gupta * Oops, non-existant file in gemspec [a3cc339 | Thu Jul 10 14:24:33 UTC 2008] Aman Gupta * Fix rake release:nightly [1a9031d | Thu Jul 10 14:17:35 UTC 2008] Aman Gupta * Fix release:gemspec task [4514a5f | Thu Jul 10 14:17:09 UTC 2008] Aman Gupta * Update ramaze.gemspec [e3c4bee | Thu Jul 10 14:13:38 UTC 2008] Aman Gupta * Use Ramaze::Rewrite in contrib/rest [73cade7 | Wed Jul 09 00:15:32 UTC 2008] Aman Gupta * Fix spec failure in SourceReload::shutdown [07c3b95 | Tue Jul 08 14:04:53 UTC 2008] Aman Gupta * start SourceReload via essentials (instead on 'require ramaze') [c671b8c | Thu Jul 03 21:31:05 UTC 2008] Jonathan Buch * Don't reuse the Adapter alias for requireing adapter files [8ebe6e3 | Mon Jun 30 13:48:08 UTC 2008] Michael Fellinger * Some minor whitespace fix [8fde4e2 | Mon Jun 30 13:47:50 UTC 2008] Michael Fellinger * Fix faulty rewrite by Global.prefix [f0d2a7c | Mon Jun 30 13:47:15 UTC 2008] Michael Fellinger * to_s before Rack::Utils::unescape [abfd86f | Mon Jun 30 13:46:48 UTC 2008] Michael Fellinger * Don't expect 303 but 302 for redirect in specs [557c016 | Fri Jun 27 09:08:38 UTC 2008] Rob Lievaart * Update ramaze syslog support, the old version did not work(anymore?). I modified the interface to use the Logging module and I updated the syslog spec file to test the syslog support. [029b39a | Wed Jun 25 19:17:54 UTC 2008] Michael Fellinger * Adding Global.prefix for nested app deployment * Global.prefix is by default '/' * Global.prefix = '/app' would strip '/app' from incoming requests and prefix it when using R/A/Rs from Helper::Link [f39700b | Wed Jun 25 14:22:00 UTC 2008] Michael Fellinger * Ramaze::Gestalt gets nicer example [734bd65 | Tue Jun 24 08:35:17 UTC 2008] Michael Fellinger * Correct license in doc/LEGAL [19210b2 | Sun Jun 22 22:28:54 UTC 2008] Aman Gupta * Add adapter to logger output [16065e9 | Sun Jun 22 22:18:54 UTC 2008] Aman Gupta * Switch contrib/gems to use Gem::DependencyInstaller [9578d8b | Sat Jun 21 10:57:11 UTC 2008] raggi * Corrected remaining Ramaze::Informer calls. dispatch.fgci and win32 may now work! [028a50c | Thu Jun 19 06:17:02 UTC 2008] Jean-Francois Chevrette * fixing the console feature that was accidentally dropped in 2008.06 [827cce9 | Thu Jun 19 15:07:45 UTC 2008] Michael Fellinger * Further usage of Rack::Utils [6bc1d95 | Wed Jun 18 22:32:34 UTC 2008] Michael Fellinger * Use Rack::Util for escape_html [17473d2 | Wed Jun 18 22:29:57 UTC 2008] Michael Fellinger * Use Rack::Utils for escape/unescape [e8bc3b6 | Wed Jun 18 13:15:21 UTC 2008] Sam Carr * Fix to Cache so it doesn't add methods to Class itself. [d917b6f | Wed Jun 18 14:54:19 UTC 2008] Michael Fellinger * Ability to deprecate constants by const_missing [df35662 | Tue Jun 17 13:55:19 UTC 2008] Aman Gupta * send 302 instead of 303 (for better compatibility with older browsers) in RedirectHelper [287516d | Mon Jun 16 23:30:44 UTC 2008] Michael Fellinger * Revert "Remove vendor/bacon.rb" This reverts commit a184f71c34e2a0d3f01d9728622aba7cc3d097fe. [cb4a7dc | Fri Jun 13 22:08:12 UTC 2008] Wang, Jinjing * remove custom hacks.. [05d7211 | Fri Jun 06 14:42:02 UTC 2008] Wang, Jinjing * em hack [235d29e | Sun Jun 15 11:08:28 UTC 2008] Clinton R. Nixon * temp fix for Passenger - remember to replace with manveru's eventual fix [e0b938b | Fri Jun 13 13:45:05 UTC 2008] Clinton R. Nixon * Added ability to fake out PUT and DELETE through POST and a hidden 'method' variable in contrib/rest.rb [c73feef | Fri Jun 13 13:44:25 UTC 2008] Clinton R. Nixon * Fixed symbol.downcase bug in helpers/rest.rb [3ebec69 | Mon Jun 16 10:37:45 UTC 2008] Yasushi Abe * Fix Global.server==nil on Cgi adapter. [2b6d1de | Mon Jun 16 20:25:56 UTC 2008] Michael Fellinger * Fix rake maintenance:undocumented dependencies [a1c0c3c | Sun Jun 15 09:23:17 UTC 2008] Michael Fellinger * Speed up and simplify Binding::locals [011b681 | Fri Jun 13 22:08:12 UTC 2008] Wang, Jinjing * remove custom hacks.. [f27affc | Fri Jun 13 21:32:25 UTC 2008] Wang, Jinjing * Fix: binding.locals on Ruby1.9, add a small spec for locals, and make haml tempalte spec pass [e73a108 | Fri Jun 06 14:42:02 UTC 2008] Wang, Jinjing * em hack [ff63fcb | Sun Jun 15 14:14:36 UTC 2008] Aman Gupta * add simple numeric time extensions [3dee5a0 | Sat Jun 14 16:11:50 UTC 2008] Michael Fellinger * Fix whitespace in simple example [32a5770 | Sat Jun 14 14:17:45 UTC 2008] Michael Fellinger * Denormalize Controller::resolve_method [5167de5 | Sat Jun 14 14:16:34 UTC 2008] Michael Fellinger * Reindent Controller::template [0e1bca8 | Sat Jun 14 14:03:33 UTC 2008] Michael Fellinger * Fix syntax ambiguity in wikore model [6c37b06 | Sat Jun 14 14:01:42 UTC 2008] Michael Fellinger * Fix syntax ambiguity in template/xslt [cb0054d | Sat Jun 14 14:00:04 UTC 2008] Michael Fellinger * Adding metric task metric:churn [8a0d7e7 | Fri Jun 13 15:38:48 UTC 2008] Michael Fellinger * Put loggers into the Ramaze::Logger namespace [2fb13c8 | Fri Jun 13 15:29:01 UTC 2008] Michael Fellinger * Fix db for wikore [146fda6 | Fri Jun 13 15:25:44 UTC 2008] Michael Fellinger * Tutorial should use h instead of c [73cc2c8 | Fri Jun 13 15:25:24 UTC 2008] Michael Fellinger * Fix db for rapaste [714df4b | Fri Jun 13 15:23:03 UTC 2008] Michael Fellinger * Fix auto_params for new ruby2ruby/parsetree [de8bea7 | Fri Jun 13 14:43:15 UTC 2008] Michael Fellinger * Remove deprecated methods [fdf7f79 | Thu Jun 12 15:49:43 UTC 2008] Michael Fellinger * Add String#end_with? / improve String#start_with? [aa73627 | Thu Jun 12 12:24:27 UTC 2008] Michael Fellinger * Change some dbs to Sequel.connect [5b55be1 | Thu Jun 12 12:23:28 UTC 2008] Michael Fellinger * Ramaze.start! instead of :force in start.ru [971ca18 | Wed Jun 11 06:27:19 UTC 2008] Pistos * Tiny wording change in announcement header info; whitespace adjustment. [8bf9de5 | Wed Jun 11 15:26:49 UTC 2008] Michael Fellinger * Update ramaze.gemspec [b6aa74e | Wed Jun 11 15:26:26 UTC 2008] Michael Fellinger * Add new gemspec task [4357eee | Wed Jun 11 15:25:37 UTC 2008] Michael Fellinger * Update ramaze.gemspec [528a013 | Wed Jun 11 14:54:36 UTC 2008] Michael Fellinger * Update CHANGELOG [0513aa2 | Wed Jun 11 14:54:16 UTC 2008] Michael Fellinger * Version 2008.06 [71287c7 | Wed Jun 11 14:51:11 UTC 2008] Michael Fellinger * Update rake tasks experimentally [3181d68 | Wed Jun 11 14:50:55 UTC 2008] Michael Fellinger * jQuery 1.2.6 [1893a8c | Wed Jun 11 14:49:59 UTC 2008] Michael Fellinger * Update announcement [5d80873 | Wed Jun 11 14:49:20 UTC 2008] Michael Fellinger * Small updates to readme [2238f4d | Wed Jun 11 04:21:53 UTC 2008] Michael Fellinger * Update announcement [ecf37f4 | Tue Jun 10 18:10:50 UTC 2008] Michael Fellinger * Tons of updates to rake tasks, needs further work. [80db14c | Tue Jun 10 10:40:32 UTC 2008] Michael Fellinger * Remove epoll again [6e5faa1 | Mon Jun 09 18:22:44 UTC 2008] Aman Gupta * Fix Adapter.before + spec [6a2c0ba | Mon Jun 09 19:23:54 UTC 2008] Riku Raisaenen * examples/sequel_scaffolding.rb: Added MainController for guidance. Reloading no longer tries to create database twice. [3bde0b2 | Mon Jun 09 12:52:08 UTC 2008] Michael Fellinger * Activate epoll for thin [e0cbfa6 | Mon Jun 09 12:50:57 UTC 2008] Michael Fellinger * Avoid segfaults on 1.8.7 due to File.expand_path [dbf039e | Mon Jun 09 11:46:57 UTC 2008] Michael Fellinger * Setup exit! trap on exit trap [448e982 | Mon Jun 09 11:22:50 UTC 2008] Michael Fellinger * SourceReload stops on Global.sourcereload = false [a467d76 | Sat Jun 07 23:22:58 UTC 2008] Michael Fellinger * More cleanup regarding darcs [5ad5628 | Sat Jun 07 23:16:58 UTC 2008] Michael Fellinger * Remove darcs.rake [a184f71 | Sat Jun 07 23:13:40 UTC 2008] Michael Fellinger * Remove vendor/bacon.rb [78f0bdb | Sat Jun 07 23:01:25 UTC 2008] Michael Fellinger * Remove useless ProjectInfo [626950d | Sat Jun 07 22:57:17 UTC 2008] Michael Fellinger * Remove useless testdoc task [be419fc | Fri Jun 06 07:45:26 UTC 2008] Michael Fellinger * Make sure separate thread is spawn for requests [763785a | Thu Jun 05 13:55:42 UTC 2008] Michael Fellinger * Give Helper::Stack#answer optional argument [b08010d | Wed Jun 04 17:43:56 UTC 2008] raggi * * Corrected Informer constant location [131fc88 | Tue Jun 03 23:57:03 UTC 2008] Michael Fellinger * SourceReload startup log should use dev [76f0aea | Tue Jun 03 17:29:29 UTC 2008] Michael Fellinger * Set openid results directly in the session * We are setting duplicate values now in the session, once in the session[:openid] hash, but also directly, so access without hitting nil is easier * session[:openid_identity] * session[:openid_sreg] [718a06d | Tue Jun 03 17:18:33 UTC 2008] Michael Fellinger * Fix Helper::Identity, session[:openid] may be nil [d0d0d40 | Tue Jun 03 12:53:06 UTC 2008] Michael Fellinger * Don't log dynamic boring actions [55085a8 | Mon Jun 02 15:34:22 UTC 2008] Aman Gupta * Reset Gem.path before each Gem.activate [5f5f081 | Mon Jun 02 13:30:50 UTC 2008] Aman Gupta * add support for Ramaze::Gems.setup :docs => false, :install_dir => __DIR__/:local_gems [644dd4d | Mon Jun 02 22:12:08 UTC 2008] Michael Fellinger * Remove not needed skip_start from proto [2f13189 | Mon Jun 02 21:54:48 UTC 2008] Michael Fellinger * Introduce Ramaze.trait[:started] * Use Ramaze.skip_start to skip all subsequent starts by indicating ramaze has been started already or will be invoked by you on demand with Ramaze.start! [2a0b717 | Mon Jun 02 21:54:01 UTC 2008] Michael Fellinger * Fix a couple of specs [0936c4c | Mon Jun 02 12:04:37 UTC 2008] Michael Fellinger * Put the spec ramaze method in Bacon::Context [2a611f4 | Sun Jun 01 14:22:59 UTC 2008] Michael Fellinger * Update tutorial to use syntax highlighting [dfd9501 | Sun Jun 01 14:15:39 UTC 2008] Michael Fellinger * Adding css_for/js_for in Helper::XHTML [3cce188 | Sun Jun 01 12:58:57 UTC 2008] Michael Fellinger * Some Reformatting for helper/identity [e6914ce | Sun Jun 01 03:49:25 UTC 2008] Michael Fellinger * Adjust Thread priority / fix sourcereload restart [83ecb92 | Sun Jun 01 02:55:15 UTC 2008] Michael Fellinger * Uniq paths/files before reload iteration [ce190ee | Sun Jun 01 02:54:34 UTC 2008] Michael Fellinger * Allow on-the-fly setting Global.sourcereload * Added SourceReload.restart and shutdown Setting Global.sourcereload to another value will initiate a restart that will change the interval. [71d79be | Sun Jun 01 02:05:12 UTC 2008] Michael Fellinger * Rewrite of SourceReload for 1.8.7 * In essence, we're doing less computation by using a block and break once we find a valid path, we use less memory. * It also seems like the File.expand_path shows horrible performance inside the Thread on 1.8.7, so we remove it. Anything that's an existing file will be found this way as well. [b480a8a | Fri May 30 13:11:26 UTC 2008] Aman Gupta * Prevent exit after successful gem install using Ramaze::Gems [97d7f6c | Thu May 29 22:28:12 UTC 2008] Pistos * More verbose error logging on SMTP errors in EmailHelper. [66931e1 | Thu May 29 21:11:14 UTC 2008] Michael Fellinger * Fix fallback and escaping for Helper::Gravatar [6b24e80 | Thu May 29 10:14:57 UTC 2008] Michael Fellinger * Helper should CamelCase helper names before lookup * For SimpleCaptcha, 'helper :simple_captcha' will search for 'SimpleCaptcha' constant [f793fbb | Thu May 29 10:13:38 UTC 2008] Michael Fellinger * Add Helper::SimpleCaptcha * for now see the example as documentation will add rdocs in a bit [d262a47 | Wed May 28 14:47:30 UTC 2008] Michael Fellinger * SourceReload startup is now faster. [e5f2ba0 | Wed May 28 12:13:35 UTC 2008] Michael Fellinger * Adding gravatar helper [acc7ec5 | Tue May 27 09:22:21 UTC 2008] Clive Crous * Everything logging is now within a namespace. [fb9e620 | Tue May 27 11:37:05 UTC 2008] Michael Fellinger * Remove warning about aspect performance [cce7d50 | Sun May 25 15:50:11 UTC 2008] Sam Carr * render_partial now sets request params with string keys, even if symbols were used. This ensures that when a user passes an options hash to render_partial, even if they use symbols as keys, they can still get at those values with request[:foo]. This is necesary because request[] converts the given key to string and then performs lookup, so any items added to request.params with symbol keys will not be found by request[]. Specs have been updated to test request param passing with render_partial, which wasn't tested at all previously. [e4f24cb | Mon May 26 23:01:56 UTC 2008] Michael Fellinger * Refactor of Helper::User [6d2730d | Mon May 26 22:57:23 UTC 2008] Michael Fellinger * Refactor of Helper::Flash#flashbox * Supports arrays values, spawns a new box for every value * trait[:tag] is now trait[:flashbox] [07f8ee7 | Mon May 26 14:53:28 UTC 2008] Clive Crous * Log a warning about Xosd's known broken status [32abefb | Sun May 25 21:47:43 UTC 2008] Wang, Jinjing * Fix: memcached to work under Ruby1.9 [be2cb7e | Sun May 25 22:46:17 UTC 2008] Michael Fellinger * Make Global.cache the default fallback [4aff70c | Sat May 24 15:54:42 UTC 2008] Michael Fellinger * Small improvments for Helper::User [7d955f9 | Fri May 23 09:50:17 UTC 2008] Aman Gupta * Fixes for Sequel deprecations [0638d0f | Fri May 23 17:02:31 UTC 2008] Michael Fellinger * Builder spec shouldn't rely on hash order [989e4ac | Fri May 23 14:02:31 UTC 2008] Wang, Jinjing * Remove: change in ezamar/engine [2d97e9e | Fri May 23 13:43:24 UTC 2008] Wang, Jinjing * proper use of proc for Ruby 1.9/1.8.7 [e6f12d9 | Fri May 23 02:19:00 UTC 2008] Michael Fellinger * Fix `ramaze --daemonize` [358f07e | Fri May 23 02:17:59 UTC 2008] Michael Fellinger * Fix options with choice in Option::Merger [5b32b1e | Thu May 22 18:10:45 UTC 2008] Michael Fellinger * Adding Helper::XHTML [e83f449 | Thu May 22 09:17:27 UTC 2008] Michael Fellinger * Minor improvments for Gestalt [9bd166c | Thu May 22 09:16:48 UTC 2008] Michael Fellinger * Fix REXML helpers in spec/helper [af72917 | Thu May 22 09:16:30 UTC 2008] Michael Fellinger * Remove some whitespace from option.rb [14f6576 | Thu May 22 09:15:18 UTC 2008] Michael Fellinger * Adding basic/gestalt example and Helper::Gestalt [0af7f1b | Thu May 22 09:12:01 UTC 2008] Michael Fellinger * ::shutdown for Thin is useless, we do that already [2bd4885 | Thu May 22 00:58:27 UTC 2008] Wang, Jinjing * Fix ezamar for Ruby 1.9 [321ad14 | Mon May 19 16:33:39 UTC 2008] Sam Carr * Improved algorithm for finding matching patterns for a given path. Simpler and faster. [8defc39 | Mon May 19 09:25:09 UTC 2008] Ryan Grove * s/gitweb/github/ [e91482a | Mon May 19 20:54:21 UTC 2008] Michael Fellinger * Sourcereload shouldn't flood on load error [e89cf79 | Mon May 19 10:51:02 UTC 2008] Michael Fellinger * Extend installation instructions for RUBYLIB [c3e3d49 | Mon May 19 10:43:23 UTC 2008] Michael Fellinger * Make git address change permanent [429257d | Mon May 19 09:23:28 UTC 2008] Michael Fellinger * Enable ruby syntax highlighting for tutorial. [dfba451 | Sun May 18 13:36:40 UTC 2008] Ryan Grove * Fix incorrect git clone URL in README. [73366d1 | Sun May 18 09:17:43 UTC 2008] Michael Fellinger * Maruku for todolist, less effort, better result [c7c7622 | Sat May 17 12:59:58 UTC 2008] Michael Fellinger * Don't call listen, it's doing respond now [927a641 | Sat May 17 12:52:28 UTC 2008] Michael Fellinger * Fix message handling in chat example [e8127d6 | Fri May 16 19:01:24 UTC 2008] Ryan Grove * Clean up the Chat example a bit (mostly JS and CSS). [8c43866 | Fri May 16 17:31:01 UTC 2008] Ryan Grove * Fix Thin adapter. [b21b46f | Fri May 16 16:47:49 UTC 2008] Michael Fellinger * Refactor Adapter, simplify the thread mess. * start_server(host, port) is now startup(host, port). deprecated notice is in place. * startup has to return the thread it starts, this is assigned to the @thread class instance variable * In case you want to access the server object later, assign it to @server, that can be used to implement the new ::shutdown method to ensure graceful shutdown for most servers. * Graceful shutdown is now in place for all mongrel based servers. * Adapter::Fake got its own file now. [73cadb1 | Fri May 16 15:04:24 UTC 2008] Michael Fellinger * Refactor of Ramaze::shutdown and SIG trap [9710bb4 | Fri May 16 14:39:21 UTC 2008] Michael Fellinger * Update README installing instructions [6dd1da2 | Fri May 16 14:31:45 UTC 2008] Michael Fellinger * Proper cleanup of wiktacular [5d551ea | Fri May 16 14:27:57 UTC 2008] Michael Fellinger * Small update to meta/configuration [2c8fc2b | Fri May 16 14:27:43 UTC 2008] Michael Fellinger * Remove usless migration information [0852e04 | Fri May 16 10:24:38 UTC 2008] Michael Fellinger * Improve installing instructions with more git tips * Copy the installing chunk to doc/INSTALL * Better formatted markdown * Split steps into smaller units [5d35a31 | Fri May 16 09:54:33 UTC 2008] Michael Fellinger * Reorganize examples directory into sections * examples/app = full application examples * examples/basic = basic usage * examples/helpers = usage of helpers * examples/misc = cooperation with libs or random stuff * examples/templates = templating engine examples [8590e4e | Fri May 16 09:05:46 UTC 2008] Michael Fellinger * Add example of element usage in Nagoro [e438c91 | Fri May 16 09:03:30 UTC 2008] Michael Fellinger * Struct#values_at should take range argument. [e00e19a | Thu May 15 09:00:14 UTC 2008] Clive Crous * Style updates for httpdigest example following the changes made to the helper. [1eccbef | Thu May 15 08:59:43 UTC 2008] Clive Crous * Correct typo and small error introduced by style changes [92dffd5 | Thu May 15 15:38:08 UTC 2008] Michael Fellinger * Use ff=unix instead of ff=dos [fc81b0b | Thu May 15 15:37:41 UTC 2008] Michael Fellinger * A couple of style changes to helper/httpdigest [8fa5be7 | Thu May 15 08:14:53 UTC 2008] Clive Crous * Cleanup digest auth parameter parsing by using Rack helpers [6c41269 | Thu May 15 15:09:07 UTC 2008] Michael Fellinger * Fix `rake gem`, README had moved to other location [1842dae | Thu May 15 14:33:32 UTC 2008] Michael Fellinger * Remove duplicate zenix [82e26f0 | Thu May 15 12:06:58 UTC 2008] Michael Fellinger * Fix gemspec task, s.files was missing [4e419f7 | Wed May 14 23:31:52 UTC 2008] Michael Fellinger * Remove useless escapes in install instructions [d9c44a0 | Wed May 14 23:25:23 UTC 2008] Michael Fellinger * Update installing instructions with proper format [c7e37c8 | Wed May 14 23:17:03 UTC 2008] Michael Fellinger * Update readme generation and use README.markdown [7af7269 | Wed May 14 23:31:52 UTC 2008] Michael Fellinger * Remove useless escapes in install instructions [d323176 | Wed May 14 23:25:23 UTC 2008] Michael Fellinger * Update installing instructions with proper format [4e430e9 | Wed May 14 23:17:03 UTC 2008] Michael Fellinger * Update readme generation and use README.markdown [b78dd37 | Wed May 14 11:35:42 UTC 2008] Clive Crous * Move requires to a saner location [8c7b878 | Wed May 14 14:43:17 UTC 2008] Michael Fellinger * Update of tasks related to doc/AUTHORS for git * Take into account the old authors from doc/AUTHORS when generating a new list * Fix `rake patchsize` * Fix `rake patchstat` [f7cc915 | Wed May 14 12:01:10 UTC 2008] Michael Fellinger * Add lib/ramaze/setup.rb for discussion. [7da3b05 | Wed May 14 11:56:37 UTC 2008] Michael Fellinger * Refactor examples/chat a little [ec795b9 | Wed May 14 07:32:42 UTC 2008] Michael Fellinger * Update docs for tool/localize [4aeca5b | Mon May 12 19:48:03 UTC 2008] Ryan Grove * When Global.compile == true, only cache actual templates, not the output of templateless actions. [60e9d18 | Mon May 12 19:23:36 UTC 2008] Ryan Grove * Use MemoryCache as the default when no cache_alternative is specified to avoid creating duplicate cache entries. [08335a7 | Tue May 13 05:25:14 UTC 2008] Michael Fellinger * Add contrib/gems.rb for super easy dependencies [f20b646 | Mon May 12 22:06:30 UTC 2008] Clive Crous * Cleanup and optimize the httpdigest helper code [5ad727f | Mon May 12 21:23:44 UTC 2008] Clive Crous * Use private instead of protected [ab21d20 | Mon May 12 21:22:54 UTC 2008] Clive Crous * Remove LOOKUP usage [3c997dd | Tue May 13 00:56:56 UTC 2008] Michael Fellinger * Add spec for request query fix [0cc9b9f | Tue May 13 00:52:47 UTC 2008] Michael Fellinger * Fix '/?a=b&a[c]=d' style nested request query. [96c1362 | Tue May 13 00:13:50 UTC 2008] Michael Fellinger * Adding git:commit task, runs specs before commit [6cff6c6 | Mon May 12 11:23:07 UTC 2008] Clive Crous * helper block now returns HA1 to allow for storage of encrypted passwords. [9fef90e | Mon May 12 17:29:11 UTC 2008] Michael Fellinger * Add a nice little chat example. * Needs some JS guru to help with nicer scrolling. * Should escape text on submit properly. * Maybe use JSON to make the API more general. * Create multiple histories for more channels. [f4aa541 | Mon May 12 08:58:31 UTC 2008] Clive Crous * Add httpdigest (authentication) helper with an example. [a67e74c | Mon May 12 15:15:34 UTC 2008] Michael Fellinger * Add Global.middleware to inject Rack middleware * By default false until we can decide. * Adds Ramaze::Adapter::MIDDLEWARE that injects Rack middleware into the Adapter::Base::call * Currently invokes (in this order): Rack::ShowException, Rack::ShowStatus, Ramaze::Current * Lets errors propagate down to the middleware level so Rack can handle them with its nice error pages. * At the moment no ramaze way to modify this errorpage, one would have to write another middleware, maybe change Ramaze::Controller#error and Co to do that? [1197ce8 | Mon May 12 12:42:03 UTC 2008] Michael Fellinger * Correct indentation of comment in Helper::Formatting [aa093b5 | Mon May 12 12:41:37 UTC 2008] Michael Fellinger * Add ordinal method to Helper::Formatting [3bc6feb | Sun May 11 10:34:58 UTC 2008] James Tucker * * Made the rackup file executable through rackup [fed0f77 | Sun May 11 18:21:48 UTC 2008] Michael Fellinger * Add some description in the .ru what rackup is about [9b58b40 | Sat May 10 12:37:19 UTC 2008] Ryan Grove * Deprecate String#escape(:sql). The SQL escaping provided by this method is unsafe and should not be used. [e78fa13 | Sat May 10 22:29:24 UTC 2008] Michael Fellinger * Localization example and small localize refactor [ccedd58 | Sat May 10 22:16:10 UTC 2008] Michael Fellinger * Improve tool/localize * Accept lambda as trait :file * Accept Regexp as keys in trait :mapping hash * Simplify some regions and reduce trait lookups in methods [fe55f5c | Sat May 10 17:51:54 UTC 2008] Michael Fellinger * Deprecation warning for Helper::CGI#c [a50668b | Sat May 10 09:10:42 UTC 2008] Michael Fellinger * Adding a ramaze.gemspec [de363b2 | Fri May 09 14:28:12 UTC 2008] Aman Gupta * Ramaze::Rewrite can be used to route to files + specs [e1efd3d | Fri May 09 10:23:48 UTC 2008] Aman Gupta * Adapter::Base#before_call must take env argument [4be5438 | Fri May 09 11:38:16 UTC 2008] Michael Fellinger * Implementing the Adapter::Base::before hook * You can use it to avoid using the whole ramaze stack for quick responses [609b800 | Thu May 08 18:23:13 UTC 2008] Ryan Grove * Remove a few lingering darcs-backup files. [0b68ee3 | Fri May 09 09:40:01 UTC 2008] Michael Fellinger * Move the /doc/README into /README so it shows up on the github page, update references. [3ccee10 | Fri May 09 08:30:05 UTC 2008] Michael Fellinger * Oops, there was a file left in the repo that got caught by the conversion script, remove that. [c63b1b0 | Thu May 08 19:45:00 UTC 2008] samcarr * Remove redundant if clause and add extra comments in file dispatcher. darcs-hash:20080508214553-a353d-9df2b558facb654c1fa42e36bbce1c6d14c42612.gz [5564045 | Mon May 05 20:02:00 UTC 2008] Michael Fellinger * Adding Ramaze::Helper::PATH, unshift your directories to have it look for helpers on the paths darcs-hash:20080505220204-cbc08-1b4a3293e9a668d61c24f96fa390b61b2ecb4605.gz [7f73be5 | Sun May 04 21:51:00 UTC 2008] Michael Fellinger * Remove cookie_secret until we need it darcs-hash:20080504235120-cbc08-fef7f01161c748760de09589b9c0fa961ea1783c.gz [05fdee8 | Sun May 04 18:09:00 UTC 2008] Michael Fellinger * Remove cookie secret code until we have new session implementation darcs-hash:20080504200927-cbc08-7c11d43f7838a3353c3f796018c07f0e9badd402.gz [4011555 | Sun May 04 20:20:00 UTC 2008] Ryan Grove * Fix my last patch. darcs-hash:20080504222008-04984-f1efc8e86da78be18c4b2cf0ff251553ee2835a6.gz [bd46524 | Sun May 04 17:44:00 UTC 2008] Ryan Grove * Display a warning instead of crashing when cookie secret file can't be written on startup. darcs-hash:20080504194408-04984-55eeed0850ea390980bfad09a511d32926b3f5f3.gz [b78feeb | Sun Apr 06 19:14:00 UTC 2008] Jonathan Buch * Add rewrites (routes before action resolving) darcs-hash:20080406211402-2c51e-933b2f59bcdf7a367e3acca533bfda9207848555.gz [39faba1 | Sun Apr 06 19:08:00 UTC 2008] Jonathan Buch * don't automap anonymous classes darcs-hash:20080406210801-2c51e-60121f22f2b7fe95b515a19aaf181828d2da59a7.gz [782ee5b | Sat May 03 18:55:00 UTC 2008] Michael Fellinger * Fix bin/ramaze to work with additions again darcs-hash:20080503205508-cbc08-4fb60aabfcde147d5da5b3064f86b0b01b7d0052.gz [35fda8c | Sat May 03 15:06:00 UTC 2008] Michael Fellinger * Remove cruft from option/holder.rb darcs-hash:20080503170640-cbc08-237f8e1f763bfabf2afcda41eb60ff9fbb682a60.gz [b7445d4 | Sat May 03 15:01:00 UTC 2008] Michael Fellinger * Adding Global#cookie_secret and Global#cookie_secret_file, this moves Session#random_key to Session::random_key darcs-hash:20080503170115-cbc08-4178961d5736c061a46cf4343f85872d9ec3b05c.gz [80c3c0c | Sat May 03 12:11:00 UTC 2008] Michael Fellinger * Make Ramaze run on Rubinius darcs-hash:20080503141144-cbc08-3938580de207fc33d4205a48a9fca50ac1ac88db.gz [caa45a2 | Sat May 03 11:19:00 UTC 2008] Michael Fellinger * Prefer sha2 over sha1 darcs-hash:20080503131954-cbc08-499f0b55645f526cb93d6532beedfbf78ae4f52d.gz [9d176a5 | Fri May 02 19:52:00 UTC 2008] samcarr * Option to set Accept-Charset header. darcs-hash:20080502215237-a353d-955cdf72cafaf908485fda9a674e4ed29aa1bd35.gz [65c59b1 | Fri May 02 17:53:00 UTC 2008] Michael Fellinger * Make Helper::Methods::helper public darcs-hash:20080502195314-cbc08-bea10c78021e677019b05a9dfdcb899af2926954.gz [fc19f31 | Fri May 02 10:11:00 UTC 2008] Michael Fellinger * Content-Type rather than content-type in proto/view/page.xhtml layout darcs-hash:20080502121106-cbc08-3e4a5daad6ed85fa5d1079b5632606e50d74fc41.gz [6ad6f1a | Fri May 02 10:05:00 UTC 2008] Michael Fellinger * Allow setting default response Content-Type by Global.content_type = 'text/html' darcs-hash:20080502120513-cbc08-1d8909b09f33860c8b066a07a4bab0bb4790986a.gz [2d37883 | Wed Apr 30 23:54:00 UTC 2008] Aman Gupta * Removing leading whitespace in haml template example for compatibility with Haml 1.9 darcs-hash:20080501015407-569a4-cd465d56ee38eb1bb9d7d51e821da35f328981d1.gz [e6765ae | Wed Apr 30 20:59:00 UTC 2008] samcarr * Improvements to Erubis and Tenjin templating darcs-hash:20080430225937-a353d-048e59e274648574b6189a0a3df647b437fd66c7.gz [d0bbbb4 | Wed Apr 30 20:56:00 UTC 2008] samcarr * Action caching is ignored if session flash data is present darcs-hash:20080430225638-a353d-6b84c9a9e95aec5f3220696045fd9e1288285055.gz [abb810b | Wed Apr 30 20:05:00 UTC 2008] Michael Fellinger * Remove useless whitespace darcs-hash:20080430220550-cbc08-6a7088c847b110264fb46e6b278e46b4a0a16ab5.gz [b5a4217 | Wed Apr 30 20:58:00 UTC 2008] Aman Gupta * Workaround for Ruby BUG when mapping class Controller; end (http://p.ramaze.net/1188) darcs-hash:20080430225817-569a4-feaafd49e7a8df3407a2403309db0bf75b789c5e.gz [43271fc | Wed Apr 30 20:53:00 UTC 2008] Aman Gupta * Bump rack dependency to 0.3.0 darcs-hash:20080430225331-569a4-a1f6ff969116c007a447622aec794979e015f76a.gz [5fbb1d0 | Wed Apr 30 20:20:00 UTC 2008] Aman Gupta * Use File.open(filename, 'rb') in Helper::SendFile to avoid issues on win32 darcs-hash:20080430222013-569a4-2f40df31bbf1ef6dd63c5c75dc625e255adf7f68.gz [e1cd261 | Wed Apr 30 18:13:00 UTC 2008] evaryont * Added my mail addy. This is patch 9! darcs-hash:20080430201338-c880c-6a018d6cc67ddbe27c8e00343657901a4abc4663.gz [6e4e373 | Wed Apr 30 17:20:00 UTC 2008] evaryont * Moved session[:openid_*] to session[:openid][:*] darcs-hash:20080430192047-c880c-a5b5648fba40f6ae10cb33090a2bacbf9f068b72.gz [087390a | Sat Apr 26 17:39:00 UTC 2008] evaryont * Updated jQuery to 1.2.4a darcs-hash:20080426193950-c880c-f00e62c30089ffff395d69a5c84f03f3ea92219f.gz [6b8acb8 | Sat Apr 26 17:45:00 UTC 2008] evaryont * Added SReg response to Identity helper Adds the session key :openid_sreg which is an instance of OpenID::SReg::Reponse. This does affect performance in a negative way, but provides plenty of extra information (including email, language preference, and country) The hit on performance is neglibile on the application's part, but it seems OpenID provider's pages take a bit longer to load. About 1 sec wall-second extra it seems. Since this only adds and doesn't change any part of the helper, current OpenID-using applications will be unaffected. (Besides the barely notciable increase in time) darcs-hash:20080426194529-c880c-845b1ae651c3a5d5b3412c869d6d27183263ce82.gz [deabd96 | Tue Apr 29 06:07:00 UTC 2008] Michael Fellinger * Reduce code in Action#(before|after)_process and add Controller::relevant_ancestors, this avoids the problem with DataMapper darcs-hash:20080429080729-cbc08-a2b77b5298c33f98af72374b8428c01193d4d399.gz [390d7c9 | Mon Apr 28 17:17:00 UTC 2008] jesuswasramazing.10.pistos * Added #push to StackHelper. darcs-hash:20080428191742-55b44-8842339e437c4748503145fcf4ec80961977e960.gz [08e8d6f | Mon Apr 28 21:04:00 UTC 2008] ara.t.howard * Inherit before/after filters from all Controller ancestors. darcs-hash:20080428230405-4585f-7066a68810db623d7508aeb70ffb30cada974608.gz [b7c124c | Fri May 02 03:47:00 UTC 2008] Michael Fellinger * Adding `rake darcs:bundle` darcs-hash:20080502054758-cbc08-1baf8a30f130a84fb0d5a538ee6c2e59911c2a94.gz [6c77c81 | Mon Apr 28 07:29:00 UTC 2008] Michael Fellinger * Add Session::Flash#empty? darcs-hash:20080428092950-cbc08-3c7ece487bff6465ef4262e5cda5541dd04163a7.gz [c9420b3 | Sun Apr 27 12:39:00 UTC 2008] Michael Fellinger * require instead of asking for version for digest/sha darcs-hash:20080427143942-cbc08-5036ab9a87452f05fc82e9d383ca6944135364c3.gz [2fec9f2 | Fri Apr 25 03:42:00 UTC 2008] ara.t.howard * Do not hit cache > 1 per request to load session. Do not access session for static asset requests - drop session on the floor by default for file/directory dispatchers. darcs-hash:20080425054210-4585f-a15edac77c836fac9e4b5d4ea0fb3791654c171d.gz [59b1cf9 | Fri Apr 25 02:13:00 UTC 2008] ara.t.howard * Fix sourcereload for session.rb/defined?(COOKIE). darcs-hash:20080425041302-4585f-069e3d6e01abbae13f1ec36b05127b072bbfe693.gz [9a3d636 | Thu Apr 24 17:45:00 UTC 2008] Michael Fellinger * Fix Helper::Form spec darcs-hash:20080424194509-cbc08-7d9396967559538bc8ed756c4002f32819557d96.gz [8b5fa22 | Thu Apr 24 17:40:00 UTC 2008] Michael Fellinger * Don't rely on String#/ in sourcreload darcs-hash:20080424194009-cbc08-fd84ac8eb6ccd897126fa96796509a8970389550.gz [a4a8bf9 | Thu Apr 24 10:50:00 UTC 2008] Michael Fellinger * Adding submit/reset buttons to formhelper darcs-hash:20080424125024-cbc08-b3cdf5f0e961ace96ea9c3ab9dcf804bc331955f.gz [2d6495f | Thu Apr 24 10:42:00 UTC 2008] Michael Fellinger * Optional Request#domain(path) parameter darcs-hash:20080424124231-cbc08-b536a6c43cab68e6f07928808021ce867d70892d.gz [bbfba59 | Thu Apr 24 10:20:00 UTC 2008] Michael Fellinger * Fix openid helper darcs-hash:20080424122022-cbc08-a85893c5b40a9fb71eaa32618aa5fa21d4f34122.gz [f404f4c | Wed Apr 23 23:51:00 UTC 2008] Michael Fellinger * Adding Request#locales darcs-hash:20080424015126-cbc08-99a71b3c50c1876f198f575f8890d6ad37c9d499.gz [b71d93a | Wed Apr 23 21:57:00 UTC 2008] Michael Fellinger * Add Request#domain darcs-hash:20080423235758-cbc08-76c8b83d2619531c749fa2c145910e7749ba15ab.gz [84341ad | Wed Apr 23 21:21:00 UTC 2008] Michael Fellinger * Don't dup action, we're not caching it anymore darcs-hash:20080423232112-cbc08-12345979af16395988705f667695b7488f728e5b.gz [96cf4e6 | Wed Apr 23 21:05:00 UTC 2008] Michael Fellinger * Add rapp to examples darcs-hash:20080423230514-cbc08-1ad4e28169531a7bf312d1ee28bc2bc15d5e0b5b.gz [df4b88f | Wed Apr 23 21:01:00 UTC 2008] Michael Fellinger * Disable caching of resolved actions and patterns in the controller/resolve.rb - it's too dangerous if you're not using memcached. darcs-hash:20080423230105-cbc08-282ccfeffeb5957107adad9be57456d417426a29.gz [347e742 | Wed Apr 23 21:00:00 UTC 2008] Michael Fellinger * Make cache spec pass on my slow 64bit machine darcs-hash:20080423230042-cbc08-6bd030071c4494d048fc01b4cd69af4da9405948.gz [7da1d30 | Tue Apr 22 04:52:00 UTC 2008] ara.t.howard * Do not blow up OptionParser by passing both option completion mappings *and* enumeration. darcs-hash:20080422065214-4585f-e977531c4409921f1bb4ed40c2ad1ddaf2999833.gz [cb86c1e | Mon Apr 21 21:17:00 UTC 2008] Michael Fellinger * Ramaze should play along with Stone, which uses facets, which defines Binding#eval darcs-hash:20080421231735-cbc08-82c74fd8d76fc928f49c7f8e266ce42e5411a7d8.gz [d9b122d | Sun Apr 20 16:40:00 UTC 2008] Ryan Grove * Allow an Integer to be passed as the ttl param for #store. darcs-hash:20080420184029-04984-55b35cbcb21cbc34f6c7514f2b2181067d21db75.gz [0f20b81 | Sun Apr 20 16:26:00 UTC 2008] Ryan Grove * Add #get and #set as aliases for #fetch and #store. This makes it possible to use Ramaze::Cache as the cache store for Sequel models. darcs-hash:20080420182640-04984-037aedd7adfc3272f75a957997773d537207faee.gz [b700b83 | Sun Apr 20 03:44:00 UTC 2008] Ryan Grove * Reduce sleep time and remove unnecessary "it"s in Cache spec darcs-hash:20080420054425-04984-c4a08c28851666fd2c98fd269c173d9ed9720e4f.gz [2500750 | Sun Apr 20 03:15:00 UTC 2008] Ryan Grove * Improve the Cache spec darcs-hash:20080420051505-04984-6762f2326059109aff8c5215cfb67a06ff943a5d.gz [8c61c60 | Sun Apr 20 02:28:00 UTC 2008] Michael Fellinger * Remove Helper::Provide darcs-hash:20080420042855-cbc08-66c6c33aaede538cb039000a093a104e8e54dbeb.gz [7e56303 | Sun Apr 20 01:01:00 UTC 2008] Michael Fellinger * Improve the action cache by using the cool new features of bitwiseplatypus darcs-hash:20080420030151-cbc08-4b8adb922c0e83870d262e4f105a830312917d2b.gz [0314425 | Sat Apr 19 22:42:00 UTC 2008] Ryan Grove * Add #fetch and #store methods to Ramaze::Cache. #fetch allows you to specify a default value that should be returned if the key is not found, while #store allows you to specify a time to live on a per-key basis. darcs-hash:20080420004211-04984-5c4ce1429c916b6e53e4c570b7f8d8bad1f85bca.gz [090ffc7 | Fri Apr 18 19:07:00 UTC 2008] Michael Fellinger * Fix caching actions for memcached darcs-hash:20080418210742-cbc08-176fbdce410e9a8b41e03a7e1d505cd96de90b1e.gz [6bc6d3a | Wed Apr 16 16:56:00 UTC 2008] Michael Fellinger * Make memcached cache work again darcs-hash:20080416185615-cbc08-b24e6f23b0e925d2a3b21e67d087b6a22df54fff.gz [09ef0fe | Wed Apr 16 11:58:00 UTC 2008] Michael Fellinger * skip skip, use skipped darcs-hash:20080416135802-cbc08-b0c2305de7525ffe3a4587c3f9edeadf39788fd8.gz [bba09ee | Mon Apr 21 15:18:00 UTC 2008] Michael Fellinger * Add readers for languages|default_language trait in tool/localize darcs-hash:20080421171854-cbc08-23c0ad037b70dba4e2063816ca8fdab45d9c9090.gz [ba27d1d | Mon Apr 21 03:12:00 UTC 2008] Michael Fellinger * Add nl2br to Helper::Formatting darcs-hash:20080421051258-cbc08-78444fc51a56f70eef46131f1165263b8ff69748.gz [b973da8 | Fri Apr 18 14:28:00 UTC 2008] Michael Fellinger * Fix --help darcs-hash:20080418162848-cbc08-f613111cbdb91c744a5ba5888d196f2d98e8c39d.gz [6427501 | Thu Apr 17 13:29:00 UTC 2008] Michael Fellinger * Expand Holder#view_root/public_root before returning, so you can render_template(Global.view_root/'foo/bar.xhtml') and it's considered absolute path darcs-hash:20080417152908-cbc08-f89f7250dc193077e0af55146562ec7a93b6c723.gz [5795493 | Thu Apr 17 06:59:00 UTC 2008] Michael Fellinger * merge ARGV and ENV by default on Global#startup so now you can use commandline parameters like 'ruby start.rb --port 8000' or 'RAMAZE_PORT=8000 ruby start.rb' and they are being respected darcs-hash:20080417085903-cbc08-053c258fb35b552e78ed841b8a68be619b9ecad7.gz [c76b521 | Thu Apr 17 06:53:00 UTC 2008] Michael Fellinger * Improve Helper::User further darcs-hash:20080417085307-cbc08-2df26fc8ff65b656d372c416bcd7f7cd4a5b166e.gz [3acb1cf | Tue Apr 15 21:46:00 UTC 2008] Michael Fellinger * Dispatcher now respond to #call instead of #process - that makes it easy to just inject lambdas instead of creating a whole new class or aliasing the method. darcs-hash:20080415234636-cbc08-37d5995f2843f518bf88e958b7054dbcc8159cc2.gz [99fecc2 | Mon Apr 14 15:37:00 UTC 2008] Michael Fellinger * Use the Class#ancestors.include? instead of Class#<=, that should make DataMapper work with Ramaze again darcs-hash:20080414173741-cbc08-3e4b8fd49a42f9a53162a1843ed56331464c5c55.gz [00baefa | Sun Apr 13 23:48:00 UTC 2008] Michael Fellinger * Introduce Global#setup again, takes hash or block darcs-hash:20080414014830-cbc08-f43b86f443b22f0e5b0895e9e0fc6e1a9fba6b34.gz [d637f62 | Sun Apr 13 06:53:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * load_engines on startup of Global darcs-hash:20080413085355-7868f-37813c91cbc8fd4476bead416f58c06a2c7e8df4.gz [dd8a517 | Sun Apr 13 06:46:00 UTC 2008] Aman Gupta * Add Ryan to AUTHOR_MAP darcs-hash:20080413084605-569a4-a392ccdacc74307944ecca7154fa50c0633108dc.gz [3423cba | Sun Apr 13 06:37:00 UTC 2008] Aman Gupta * Small bugfix for helper/auth darcs-hash:20080413083741-569a4-f8c9c5bbbeaf1d246aa9b5b56a0c08e4cb2d6d67.gz [6194ded | Sun Apr 13 06:19:00 UTC 2008] Michael Fellinger * Adding contrib/rest.rb darcs-hash:20080413081913-cbc08-9262f2b8bfc31aad08d8d671d067dd80cab1044f.gz [7739e5d | Sun Apr 13 06:18:00 UTC 2008] Michael Fellinger * Some improvments for examples/simple.rb darcs-hash:20080413081847-cbc08-affd2c9d692810316f6d0a04d720ec5cbd1227f3.gz [3d8abb1 | Sun Apr 13 06:18:00 UTC 2008] Michael Fellinger * Adding example for Helper::Form and Sequel darcs-hash:20080413081821-cbc08-dfee931fbd1adbd0d9d32a296c9fe2b37e614c87.gz [5b069e1 | Sun Apr 13 06:15:00 UTC 2008] Michael Fellinger * Beautify the rest example darcs-hash:20080413081538-cbc08-89bc6363ae60de0bb1b6c9b80a9823eecfa73de8.gz [1dfb59e | Sun Apr 13 06:14:00 UTC 2008] Michael Fellinger * Adding experimental Helper::Provide darcs-hash:20080413081408-cbc08-9827ee217a730d1c9885c03ef44dc025b60890e3.gz [f46ae6d | Sun Apr 13 06:06:00 UTC 2008] Michael Fellinger * Port Mikan::Option to Ramaze::Option, potentially lethal for your application! darcs-hash:20080413080638-cbc08-11a140dc17e149d2f3ee126374186da58851e9a3.gz [f209770 | Sat Apr 12 06:53:00 UTC 2008] Aman Gupta * Add more docs to Helper::Redirect#respond darcs-hash:20080412085344-569a4-e814236fddc813b1c7b3d6be811bbccced24c79f.gz [f90246b | Wed Apr 09 22:56:00 UTC 2008] ryan * handle EOFError exception when calling rack_params to prevent possible crash on malformed POST requests darcs-hash:20080410005625-0c10b-0b266c8e8bf9dee7c8ad8fa3ca02b9aa72896585.gz [3f50fb8 | Wed Apr 09 21:29:00 UTC 2008] Aman Gupta * Fix __DIR__ implementation for windows darcs-hash:20080409232957-569a4-68ca71298499435fde27efac68af2c2b8b9effe7.gz [69a922c | Wed Apr 09 04:31:00 UTC 2008] Aman Gupta * Improve String#unident support for different styles of inline strings darcs-hash:20080409063112-569a4-b76039384af959d3c36b8f34f75dcd69fb8aedaa.gz [17e0701 | Tue Apr 08 23:41:00 UTC 2008] Aman Gupta * Add options to auto_link(), for example auto_link(text, :target => '_blank') darcs-hash:20080409014147-569a4-706d1cd627432b477f9aef5c2138002b0ea5e7fd.gz [7a4be1d | Tue Apr 08 23:18:00 UTC 2008] Aman Gupta * Add auto_link to Helper::Formatting darcs-hash:20080409011852-569a4-90a4b8bb43e1773441fdc7e7adc38e57fb59ce19.gz [1dadd31 | Sun Apr 06 23:10:00 UTC 2008] Aman Gupta * Session::Flash and Session::Hash now refer explictly back to their session (instead of using Current.session). Session#initialize can take either a request or session_id and the Session[] wrapper allows retrieving any session given its id darcs-hash:20080407011018-569a4-c7317886aa92bf49cc456d9766f1c6d4b6a5d8b9.gz [4e69381 | Sun Apr 06 20:42:00 UTC 2008] Aman Gupta * Add Ramaze::Session.sessions wrapper for Ramaze::Cache.sessions darcs-hash:20080406224253-569a4-c3f364d6e6c16aee48eb16153c7d3663b3add463.gz [e3820e0 | Fri Apr 04 12:41:00 UTC 2008] Keita Yamaguchi * benchmark/run.rb: improved gruffs output and enabled to handle multiple formats darcs-hash:20080404144103-7958a-4aadb63264dc63cf38d20c87f38633b23632e846.gz [ac736ab | Thu Apr 03 12:17:00 UTC 2008] Keita Yamaguchi * benchmark/run.rb: '--paths' option can handle multiple paths darcs-hash:20080403141736-7958a-7c642da2ebf381115e49bca8af17ac5340b33ded.gz [e0adeca | Thu Apr 03 09:30:00 UTC 2008] Keita Yamaguchi * benchmark/run.rb: '-a' option can handle multiple adapters darcs-hash:20080403113010-7958a-ab1b64fac7eb4d1942ca90df434ee5874b6e7a4b.gz [17809b0 | Sat Apr 12 10:50:00 UTC 2008] Michael Fellinger * Moving basic_scaffolding to sequel_scaffolding to show intent darcs-hash:20080412125008-cbc08-1d07b8c795263177ae6b0b303d23aa80dd3ea1e9.gz [f8b7352 | Fri Apr 04 06:44:00 UTC 2008] Michael Fellinger * Some improvments to Helper::REST darcs-hash:20080404084431-cbc08-02fe0996e1f217442e1c9e10d7882427cf8f0ffd.gz [955048e | Fri Apr 04 06:44:00 UTC 2008] Michael Fellinger * Adding examples/basic_scaffolding.rb darcs-hash:20080404084406-cbc08-c3bbf6f5205f1086b0410bdd3108a1f5ac862c5d.gz [8d988f7 | Thu Apr 03 10:29:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Introducing Helper::REST darcs-hash:20080403122925-7868f-c5466329efcd6c71b9513607b8952d2c475ea3c8.gz [dda2e26 | Wed Apr 02 12:46:00 UTC 2008] Keita Yamaguchi * benchmark/run.rb: add '--format gruff', this generates sidebar graph image using gruff darcs-hash:20080402144632-7958a-36122a37a59a052fd97fe2838ccfc65c162ebecc.gz [9c6a93e | Wed Apr 02 09:45:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Docs for spec/helper darcs-hash:20080402114555-7868f-58aa2de7a9bfaab416f192fa2a68d91c46df7fe5.gz [ee0ca5c | Wed Apr 02 09:45:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Some docs for Helper::User darcs-hash:20080402114513-7868f-e096c433d15855ee8f30c0eab5b79eca2c979544.gz [ea9fec9 | Wed Apr 02 09:43:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Further docs and refactor of Helper::Form darcs-hash:20080402114343-7868f-d3f2408624e1a42467cb98b25c87df2635d99f56.gz [42107d3 | Wed Apr 02 07:03:00 UTC 2008] Keita Yamaguchi * benchmark/run.rb: add '--format csv' option darcs-hash:20080402090300-7958a-4d37528d699dbf68f2f6c9e5f6c52db8188dbc55.gz [c179f16 | Wed Apr 02 07:08:00 UTC 2008] Jonathan Buch * Fix route spec, missed a .should== darcs-hash:20080402090837-2c51e-796382031491708efe267f0d31edfca50e81bf05.gz [09b24a7 | Wed Apr 02 04:27:00 UTC 2008] Keita Yamaguchi * Refactoring benchmark/run.rb: create new options(--no-sessions, --no-informer, --ignored-tags) and trap SIGINT to ensuring exit darcs-hash:20080402062722-7958a-a9cfe08fb9725e7344a2079351931db71a5cbe9b.gz [b296c49 | Tue Apr 01 13:52:00 UTC 2008] Keita Yamaguchi * Refactoring benchmark/run.rb: make sure wait starting up ramaze and write help messages darcs-hash:20080401155245-7958a-304b5340ecdd91cd2b8aebac1929d970e79fa708.gz [589ec0c | Tue Apr 01 11:20:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * And yet another bunch of docs. darcs-hash:20080401132039-7868f-4d1a407e5c7c08605bc076ea474e88b147a0d50a.gz [2d6b272 | Tue Apr 01 10:49:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Another few percent of docs darcs-hash:20080401124936-7868f-2595fbf19c55a2e485853f3f0f4048b8cc135769.gz [247632b | Tue Apr 01 10:04:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Output useful vim line on `rake undocumented` darcs-hash:20080401120414-7868f-e27e1c5c7d5d68da59d1b8314a5c652241e7a1d8.gz [c9a41df | Tue Apr 01 10:04:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Make Struct#values_at documented darcs-hash:20080401120401-7868f-f646d2e7a809dd30f73c66581a17023984c0d883.gz [2c32684 | Tue Apr 01 10:03:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Adding docs for a ton of things darcs-hash:20080401120342-7868f-dac9b3deae2d2c1c2c50f773b670884d97c947e8.gz [42cd54d | Tue Apr 01 09:39:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Fix `rake undocumented` it didn't cover files that had _no docs at all_ and also compute the ratio of docs we do have. darcs-hash:20080401113950-7868f-c5dacb3a8f0e0c7429eeaed71d3b90b2704f50a4.gz [2c01ad8 | Tue Apr 01 09:12:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Include meth= methods in the `rake undocumented` darcs-hash:20080401111213-7868f-779864e8c2c8e70c134d7e196eb9b642ea693409.gz [dbaecbc | Tue Apr 01 05:59:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Adding some more docs darcs-hash:20080401075941-7868f-4b839c3055dc401becf9e6e9b7c23791b3b6f316.gz [47c54e0 | Sun Mar 30 03:23:00 UTC 2008] Aman Gupta * Update doc/AUTHORS darcs-hash:20080330052335-569a4-311cf5a88517e37f249064728731b21f66c73bc1.gz [585401f | Sun Mar 30 01:07:00 UTC 2008] andy * Remove redundant require darcs-hash:20080330020741-a1ec8-2f791ca80ee9255929c865adeae27800adf76cd4.gz [a8bcae6 | Sat Mar 29 22:43:00 UTC 2008] andy * Remove warnings and double-require darcs-hash:20080329234305-a1ec8-3250cc8b8e40ae30200718a00e83a1c22aed240e.gz [37d5f81 | Fri Mar 28 09:47:00 UTC 2008] Thomas Leitner * Small fix for helper/identity Three small fixes: * error message now more descriptive on failure * return_to URL should now also work if app is deployed under subdir * fixed URL that gets passed to consumer.complete to work with mongrel darcs-hash:20080328104751-1c5bc-b43e5c25fc7de8596ba67fd203d26bf69ec2a2c4.gz [049fcc9 | Mon Mar 31 05:56:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Extend the proto layout darcs-hash:20080331075610-7868f-713da8c6d3c223db29c59e7b500668c4a952ba97.gz [425e562 | Mon Mar 31 05:54:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Fix bin/ramaze -e and bin/ramaze -i darcs-hash:20080331075448-7868f-386031f3d88bd0802bf498334203403d65724c11.gz [624c862 | Sat Mar 29 12:12:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Docs for some methods and fix for `rake undocumented` darcs-hash:20080329131237-7868f-ba9be304ea6ff9e4e227d56b95432a3607d4d7e6.gz [09de7c6 | Fri Mar 28 15:03:00 UTC 2008] Keita Yamaguchi * Improve benchmark script darcs-hash:20080328160301-7958a-f130eb56ff4d76321b14c1599bc6093ae0475a9f.gz [9e29b3b | Fri Mar 28 05:48:00 UTC 2008] Aman Gupta * Bump repo version to 0.3.9.5 darcs-hash:20080328064807-569a4-5810622bfb2fe44fe45a4adf7e2451d45d173cb1.gz [5bac751 | Fri Mar 28 05:22:00 UTC 2008] Aman Gupta * rake release works again darcs-hash:20080328062241-569a4-465ae57cb9fd3fa6adf8707de58c6ec7c8e56dc5.gz [cb2ba9d | Fri Mar 28 05:20:00 UTC 2008] Aman Gupta * use respond() in sendfile helper darcs-hash:20080328062033-569a4-e026a06f76de4a0f2a39019bcc0c4f7f30d1ef1a.gz [9cf0108 | Thu Mar 27 10:36:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Much better version of Helper::Form, now with ORM independence, just waiting for your layers. darcs-hash:20080327113659-7868f-67a0450c961787978ea321a663cdec2c7357deb3.gz [4135b7b | Thu Mar 27 02:23:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Adding Object#instance_variable_defined? if we're running ruby < 1.8.6 darcs-hash:20080327032335-7868f-ec8070fe307181ff2ca371523995ff82441d6f2a.gz [89ed987 | Wed Mar 26 06:23:00 UTC 2008] Keita Yamaguchi * Require benchmark.rb only when it is needed and add spec about benchmarking darcs-hash:20080326072328-7958a-e8f45e037fe7e2c841b65d8b4900a182af2fc972.gz [b7cc250 | Tue Mar 25 10:40:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Further build out date handling in Helper::Form darcs-hash:20080325114000-7868f-af8e5bbc9543840e593ae374adc67e764627da1c.gz [63bd6f5 | Tue Mar 25 02:41:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Fix Helper::Identity for Helper::LOOKUP darcs-hash:20080325034145-7868f-e97dfb1a26c9628a6c4e7d331adcfe5b6acb992c.gz [0b9ff48 | Tue Mar 25 02:39:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Fix SEED/APPDIR before start.rb when using bin/ramaze darcs-hash:20080325033917-7868f-f681714f060fe1e3d4290da7e5e60d216d5d5eea.gz [6b9dfc5 | Tue Mar 25 00:42:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Fix spec/contrib/profiling darcs-hash:20080325014257-7868f-eacb92c622b1d53c8dd21c990a0cab42e8a9daae.gz [831eb8a | Wed Mar 19 08:52:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * This moves the template directories in the specs to corresponding view directories and adjusts the specs for it. darcs-hash:20080319095210-7868f-cf6ac4e5af6dcc57ea5e906f7e3e5578d4ee77e9.gz [d548cd3 | Mon Mar 24 23:11:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Next snapshot of Helper::Form darcs-hash:20080325001127-7868f-b35338b98c516b8e0bcc11e8bd4a369947ca15e0.gz [c7b39a1 | Mon Mar 24 05:37:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Add Helper::Form - first draft darcs-hash:20080324063758-7868f-1bc4ea90097f37d4a874696761bd2fd700ba60d3.gz [bc7b70f | Mon Mar 24 05:37:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * 'Give Requester proper access and add hget/hpost darcs-hash:20080324063737-7868f-917ea474b3cef797b95b71ea29ba7995e6afb3ea.gz [e2dc262 | Mon Mar 24 05:08:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Show exception instead of missing error if a spec is empty because of it. darcs-hash:20080324060806-7868f-ede8ce5e619d647ee577972a087e7fc4d1480db4.gz [954aae9 | Sat Mar 22 22:09:00 UTC 2008] Aman Gupta * Update Ebb adapter for latest release darcs-hash:20080322230946-569a4-aae3111b46d09a50252fb13ab245a4aba0c0e8df.gz [c9edaf9 | Fri Mar 21 20:01:00 UTC 2008] Aman Gupta * Catch tcp errors in contrib/facebook darcs-hash:20080321210154-569a4-36101a0f120830207639accbc2438b66440a81a4.gz [45fa323 | Fri Mar 21 20:01:00 UTC 2008] Aman Gupta * Fix typo in dispatcher rdoc darcs-hash:20080321210146-569a4-d814e407afb1932c81a70abd1d53c428847fa4ac.gz [9f5a44f | Fri Mar 21 18:23:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Create a new Thread for every request that shares the thread of its server. darcs-hash:20080321192335-7868f-f8787c3fba49bb4a83d490a943c4a63be363c9f6.gz [eda1f5a | Fri Mar 21 18:20:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Remove Global#(spawn|ports|adapters) to simplify Adapter... nobody ever uses multiple adapters in same instance anyway. darcs-hash:20080321192044-7868f-afe5aa053473c33b5e5e0b137ec9b60d10183a60.gz [bcc3b8a | Fri Mar 21 14:15:00 UTC 2008] Keita Yamaguchi * Add new spec file for examples/simple_auth.rb and change Browser#initilize darcs-hash:20080321151530-7958a-f9d2a8ae40591a427d15d8794ea424a7fca9f28f.gz [ad075a9 | Thu Mar 20 12:28:00 UTC 2008] Keita Yamaguchi * Remove unnecessary settings about Global.test_connections darcs-hash:20080320132819-7958a-d76b7e8e10b3fa4cd552de385098423c117cec29.gz [4a1546f | Thu Mar 20 13:24:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Removing deprecated code darcs-hash:20080320142415-7868f-5b535a68c5f7a77c136afbac5e2c52cebe3e6fdf.gz [8fa6172 | Wed Mar 19 17:52:00 UTC 2008] ara.t.howard * Allow render_template to accept an absolute path. darcs-hash:20080319185219-4585f-0171da8ac13602bc74d8440cc9bd2a72489c2aa7.gz [7ffd714 | Wed Mar 19 12:15:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Problem with ancestors of Controller, if an action ever was public in the lower hierarchy and was made private in a subclass it would still be resolved. This takes into account the specific composition of all public/private settings over the ancestors (showed up when method #error was private in subclass but Ramaze::Controller#error was public) darcs-hash:20080319131512-7868f-9ee0138e4c9e3f618b6b70ea821dac13d35f6035.gz [c84a1a8 | Fri Mar 07 16:34:00 UTC 2008] Keita Yamaguchi * Each filter(Dispatcher::Action) don't need to return the response darcs-hash:20080307173456-7958a-3b01f96384c4a184bb8c544571fb5d650d4bb560.gz [1825cf9 | Mon Mar 17 03:22:00 UTC 2008] Aman Gupta * Fix remaining contrib/facebook and examples/facebook bugs darcs-hash:20080317042218-569a4-52d567feb00ca7facfb26694ea2d3840f64ca263.gz [eb25e4d | Mon Mar 17 00:48:00 UTC 2008] Aman Gupta * Bump version to 0.3.9 darcs-hash:20080317014817-569a4-269624f9be83ca51719d595c92b901d46384f405.gz [7f7531f | Mon Mar 17 00:47:00 UTC 2008] Aman Gupta * Allow for emptying out session.client hash darcs-hash:20080317014756-569a4-7857205d656530d1730baa68ec3901db99f5364f.gz [f3c34d9 | Mon Mar 17 02:38:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Prevent directory traversal attack introduced by CGI escaping the incoming path. Apply this patch immediately if you run a mongrel-based server without anything like apache/nginx in front of it. darcs-hash:20080317033811-7868f-eca8c2e4aa4a47d0d96cb652d42122662ebe6c87.gz [645a4fb | Mon Mar 17 02:37:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Adding String#start_with? for 1.9 compat darcs-hash:20080317033703-7868f-0a3852b2ea4baf01392a0e5f81fc629c4438666e.gz [1184ec6 | Wed Mar 12 02:09:00 UTC 2008] ara.t.howard * Adds render_action shortcut to Helper::Partial. darcs-hash:20080312030943-4585f-ec0f0cc955935c5d6bbee1d1273ad33a4216968e.gz [9e41811 | Tue Mar 11 00:25:00 UTC 2008] ara.t.howard * Take *copy* of parent's trait[:layout] - do not *share*. darcs-hash:20080311012520-4585f-6443dc0fd9ae7669082f49c2af2c8087be894bac.gz [25d60c3 | Tue Mar 11 01:23:00 UTC 2008] Michael Fellinger * Fixing some docs for snippets darcs-hash:20080311022316-cbc08-2ad54676e52440608a117200a5452d7c5f483a15.gz [ce980be | Tue Mar 11 00:14:00 UTC 2008] ara.t.howard * Lazily and smartly inherit aspects from parent class via ancestral_trait iff possible. darcs-hash:20080311011451-4585f-ef2937db11c14e3fd18145e78687103f7286c04c.gz [e67479a | Mon Mar 10 22:24:00 UTC 2008] ara.t.howard * Don't fubar AR by undefing Symbol#to_int. darcs-hash:20080310232404-4585f-39a1d1300a02439028c9598e1f0e8cde62ed0f54.gz [bad62fc | Mon Mar 10 14:49:00 UTC 2008] ara.t.howard * Add Object.pretty - it was forgotten before. darcs-hash:20080310154945-4585f-c70eea5d1e9fe7b57cdab7e4d786fb14accdf32f.gz [2689f7b | Mon Mar 10 08:50:00 UTC 2008] Michael Fellinger m.fellinger@gmail.com <> * Adding Browser#(find_link|follow_link|follow_links) darcs-hash:20080310095016-7868f-2fe2bf6ae498bb23b7c8938d165d26282578fa36.gz [fc6d36d | Mon Mar 10 01:29:00 UTC 2008] ara.t.howard * Bootstrap layout trait from parent lazily - aka inherit a copy. Fixes bugs with deny_layout in child. darcs-hash:20080310022942-4585f-3b979af793602d8aafd8e1d870f08eeaa5906946.gz [1f8567e | Sun Mar 09 06:37:00 UTC 2008] Michael Fellinger * Support hget/hpost that automatically sets @page in the Browser for specs darcs-hash:20080309073701-cbc08-f660ff895331d50963894260208defb45dd44d2c.gz [4f7ebe6 | Sun Mar 09 00:55:00 UTC 2008] Michael Fellinger * A couple of improvments for Helper::User, should integrate better with Sequel (respond_to? didn't work for first access of dataset values) darcs-hash:20080309015554-cbc08-8304415fb8d51d5685cc43c821cc9374d613e6bd.gz [2d196f6 | Sun Mar 09 00:55:00 UTC 2008] Michael Fellinger * Helper::User now sets @user_helper to avoid collisions with often-used @user darcs-hash:20080309015524-cbc08-89f58217a946724cd132b4ae284cf0ddc9dca2b8.gz [7fb3ebe | Sun Mar 09 00:55:00 UTC 2008] Michael Fellinger * More robust flashbox darcs-hash:20080309015508-cbc08-93c6756fa821ae8236b42f67b3632e3047c7a4af.gz [54640b7 | Sun Mar 09 00:54:00 UTC 2008] Michael Fellinger * Allow deleting key from non-existing session.flash darcs-hash:20080309015455-cbc08-4c452441c3dda4942509f5411fd412cce2b84e2a.gz [d02ca4c | Sun Mar 09 00:51:00 UTC 2008] Michael Fellinger * Introduce Request#subset - plus docs and spec darcs-hash:20080309015148-cbc08-34307889d758dbc035c0a599d9c0c7955baaf26f.gz [9e2c6b4 | Sat Mar 08 23:15:00 UTC 2008] ara.t.howard * Wrap Helper#helper/Trinity in Helper::Methods to avoid dumping *every* Helper::XXX into the caller's namespace - relace all 'include Helper' calls with 'include Helper::Methods'. darcs-hash:20080309001525-4585f-5ca2b1fd45c7a4c1b182edce4378505e5ad17232.gz [1da2f63 | Sat Mar 08 15:49:00 UTC 2008] ara.t.howard * Adds String#.escape(:html|:cgi|:uri|:sql) with alias String#esc. darcs-hash:20080308164911-4585f-7b28268cd2f5f2a985c3787cef14864ee9522418.gz [0c72ef6 | Sat Mar 08 07:37:00 UTC 2008] ara.t.howard * Build decent plain/text error message in Dispatcher::Error. darcs-hash:20080308083704-4585f-c77f944446348f36f1622df9df597694cf13af88.gz [1af6ab0 | Sat Mar 08 07:10:00 UTC 2008] ara.t.howard * CGI.escapeHTML(error.message) when failing back in error dispatcher. darcs-hash:20080308081002-4585f-49e42c475f6b4d7b1e2e75dce8a8849da2957289.gz [0b866b0 | Sat Mar 08 05:58:00 UTC 2008] ara.t.howard * Provide late initialization and late binding of layout to support proper inheritence of Controller.layout declarations and Controller#layout actions. darcs-hash:20080308065837-4585f-5744964ff1c3ebbb84f9f0a0c6034b719e08767a.gz [16e6091 | Sat Mar 08 05:55:00 UTC 2008] ara.t.howard * Helper::Link methods do not expose methods on controllers - they are private. darcs-hash:20080308065559-4585f-e6c7ac8f98bd86c638f04bcf5eed604cbcd989d8.gz [cbba29b | Sat Mar 08 05:44:00 UTC 2008] ara.t.howard * Allow Controller.deny_layout to specify anything trequal-able. darcs-hash:20080308064448-4585f-a6db1dbe074e0ee3bb6b4412e5364c011b73601a.gz [a03c4d2 | Sat Mar 08 04:04:00 UTC 2008] ara.t.howard * Deal with the fact that template_root is an array correctly in Controller.template. darcs-hash:20080308050442-4585f-3e15c736cf6ddb3150fdd55b1fc517277fe7f4cf.gz [a1c7fb2 | Sat Mar 08 00:14:00 UTC 2008] ara.t.howard * Helper::Partial.render_template use template_paths instead of template_root. darcs-hash:20080308011443-4585f-b194e8de1107b9d823ca981566ca83115e5c47e8.gz [859771c | Sat Mar 08 00:11:00 UTC 2008] ara.t.howard * Uniform access to Controller.template_root - no @template_root access allows dynamic template_root override. darcs-hash:20080308011130-4585f-b219acb2c591189e997202e825401ae37d406d9e.gz [9a33dc6 | Fri Mar 07 23:20:00 UTC 2008] ara.t.howard * Inherit layout(:layout) declarations via ancestral_trait. darcs-hash:20080308002025-4585f-888638dadd9ee1f49e3cd8082f87e6ed959c2810.gz [e8d4c24 | Fri Mar 07 04:57:00 UTC 2008] ara.t.howard * Use Ramaze module methods for parse_backtrace and caller_lines in Controller#error. darcs-hash:20080307055744-4585f-ef373883bae0a3970f9c485f290252d14be01b9d.gz [9ae90be | Fri Mar 07 22:03:00 UTC 2008] Aman Gupta * Allow access to SimpleHTTP object inside Browser darcs-hash:20080307230341-569a4-8eb361e09dbca341ec3bce12725143df759528c3.gz [aa4e32d | Fri Mar 07 19:49:00 UTC 2008] Aman Gupta * spec/contrib/profiling requires ruby-prof darcs-hash:20080307204935-569a4-d93ade2edcf9fda851a1bc9c7b3657ff8e7d98f4.gz [5dccbfd | Fri Mar 07 19:03:00 UTC 2008] Aman Gupta * Remove helper/facebook dependency on helper/inform darcs-hash:20080307200309-569a4-9b0079f8417a495cc0a666095e263d1e798a4918.gz [2b13a2f | Fri Mar 07 19:02:00 UTC 2008] Aman Gupta * Add ramaze/spec wrapper for ramaze/spec/helper darcs-hash:20080307200249-569a4-471afdc214c5d83a4e9e1d88bed64536a62f995c.gz [faa8b2f | Thu Mar 06 18:52:00 UTC 2008] ara.t.howard * Report errors in Current.(before|after). darcs-hash:20080306195207-4585f-8610672d141baf8e2c17c8155a072773c9202d5d.gz [2c4021d | Fri Mar 07 05:01:00 UTC 2008] Michael Fellinger * Introduce Ramaze::Helper::User, see spec for usage until i can crank out some docs. darcs-hash:20080307060117-cbc08-ede9f12a61676cd9006b0b01b15695b64875c370.gz [0afa1fb | Thu Mar 06 12:41:00 UTC 2008] Michael Fellinger * Move author_map into the rake_tasks/conf.rake darcs-hash:20080306134156-cbc08-4ec51c8b46f247634e08f9f1188c99e3d8e706e8.gz [3c2d446 | Thu Mar 06 12:28:00 UTC 2008] Michael Fellinger * Doc for Helper::Flash#flashbox darcs-hash:20080306132817-cbc08-721ab9f233d69c85bd6a9e6f9373cd8a5eb72690.gz [facb615 | Thu Mar 06 04:01:00 UTC 2008] Michael Fellinger * Introduce Helper::Flash#flashbox - will give you a div per key/value in your session.flash with class="flash" id="flash_%key", configurable over a trait or by passing parameter. (needs docs) darcs-hash:20080306050129-cbc08-a7ad3e18cb45917336d02a8b28d1e7a95cd0e3aa.gz [21a8884 | Thu Mar 06 04:01:00 UTC 2008] Michael Fellinger * Make Session::current#flash Enumerable darcs-hash:20080306050105-cbc08-f5323db8df4697ea68d7990c2b416af9c6fb6cd1.gz [5f3bc2f | Thu Mar 06 05:21:00 UTC 2008] ara.t.howard * Fixes return value of Adapter::Base.call when benchmarking turned on. darcs-hash:20080306062118-4585f-59260fbeec675477adf76289d0927c1ec3392c1a.gz [aefbcc4 | Wed Mar 05 05:15:00 UTC 2008] Keita Yamaguchi * Add profiler using ruby-prof darcs-hash:20080305061523-7958a-6ccdbe26f2138af855e0b7f7b33670c83410ee6c.gz [a90ac3e | Wed Mar 05 22:58:00 UTC 2008] ara.t.howard * Move Action.before *after* setup has occured. darcs-hash:20080305235817-4585f-c70dcd7a4cf04e4f549cc484394b6b93e42d76b2.gz [d6db34e | Wed Mar 05 22:26:00 UTC 2008] Michael Fellinger * Sync with bacon: 6.2.2008 Mon Feb 11 02:42:32 JST 2008 Christian Neukirchen * Empty specifications are now erroneous Mon Feb 11 02:45:24 JST 2008 Christian Neukirchen * Reformats Sun Mar 2 19:52:09 JST 2008 Christian Neukirchen * Count failed requirements too Sun Mar 2 19:52:38 JST 2008 Christian Neukirchen * Call after-blocks even if before-blocks or spec raise exceptions Based on a patch by Keita Yamaguchi darcs-hash:20080305232621-cbc08-c0ff72c60cef6502ac8537b17d35c85870fbaa58.gz [84e7e18 | Wed Mar 05 21:07:00 UTC 2008] ara.t.howard * Adds SequelCache and FileCache to contrib. darcs-hash:20080305220701-4585f-0375ec13901087a7dae32b809ba60cb2e28f5836.gz [49cdf37 | Wed Mar 05 05:27:00 UTC 2008] ara.t.howard * Refactor Current, including Current.before/after hooks. darcs-hash:20080305062716-4585f-c7605467fc899926762f4e8ab99968572de1f51b.gz [908979d | Wed Mar 05 00:57:00 UTC 2008] ara.t.howard * Refactor thread_accessor, adding block initializer. darcs-hash:20080305015756-4585f-e2ef41e4dce61e1e740e17b5c684f17569f31436.gz [ae995e8 | Tue Mar 04 09:25:00 UTC 2008] Michael Fellinger * a _lot_ faster `rake patchstat`, only works with darcs2 though... darcs-hash:20080304102508-cbc08-bf39f548385daee316f789884b25275222145d72.gz [b8f9417 | Tue Mar 04 08:51:00 UTC 2008] Michael Fellinger * Don't use Helper::Inform in SourceView darcs-hash:20080304095147-cbc08-847ce3266861aa510ed81accb6aa0990475a88ca.gz [418bb2b | Tue Mar 04 08:40:00 UTC 2008] Michael Fellinger * Put all helpers into the Ramaze::Helper namespace and remove the 'Helper' suffix from their name. Sideeffects: some deprecation and Log is now also available through L if you use the helper :log darcs-hash:20080304094052-cbc08-b409d45cbabc2b8b1df9794863640fe5955eb75c.gz [10a7369 | Tue Mar 04 03:39:00 UTC 2008] Michael Fellinger * Make WEBrick use Log instead of Inform darcs-hash:20080304043918-cbc08-971c4c2035f2732487485750b855b3808c6154b1.gz [78345b4 | Tue Feb 26 05:00:00 UTC 2008] Michael Fellinger * Move patchsize/patchstat into rake_tasks/maintenance.rake and optimize them. darcs-hash:20080226060018-cbc08-79bd254c661bdcc1d8b6ea1ce6c7d5ee0cc1b869.gz [322ece8 | Tue Mar 04 07:20:00 UTC 2008] Aman Gupta * Fix conflict between def log() and attr_accessor :log in SpecLogger darcs-hash:20080304082023-569a4-778f67462599cc564f1653250005a9167bce8afe.gz [28a4ace | Tue Mar 04 07:07:00 UTC 2008] Aman Gupta * Update thin adapter to use latest API darcs-hash:20080304080703-569a4-56f26e25bd9ec3c6dd8199ef1fbecb7aeba1068d.gz [0c538b2 | Tue Mar 04 07:02:00 UTC 2008] Aman Gupta * Fix contrib/facebook to work with new thread_accessors in Trinity darcs-hash:20080304080258-569a4-37492f296bc7474edda95fdd0e2de80e912f1d02.gz [fb7ef6a | Mon Mar 03 23:24:00 UTC 2008] Michael Fellinger * Fix port for ebb darcs-hash:20080304002421-cbc08-ed505047753c92d310b368c8296d6d3edcb6c6b9.gz [72cfc8e | Mon Mar 03 22:37:00 UTC 2008] Michael Fellinger * Don't use Request#remote_addr, instead use the more failsafe Request#ip darcs-hash:20080303233737-cbc08-4646c5e597e3f0a9b9e7bd7e8d9ad6e6701558b0.gz [51c5405 | Mon Mar 03 22:34:00 UTC 2008] Michael Fellinger * put 'The Action' output on :dev and give more detailed information on error instead. darcs-hash:20080303233452-cbc08-37cd9fc6d85845a1d4f41655eac71046512828f3.gz [7f1b8cc | Mon Mar 03 22:23:00 UTC 2008] Michael Fellinger * Remove useless '=> ex' darcs-hash:20080303232337-cbc08-7e658c40d533fc5d6610062fc076a483116248de.gz [69889c7 | Mon Mar 03 05:26:00 UTC 2008] Michael Fellinger * Forgot to add ramaze/inform as fallback... darcs-hash:20080303062633-cbc08-549377b3405e7f8532e9c0cf4a9d4a976979348a.gz [abbdaa3 | Mon Mar 03 04:11:00 UTC 2008] Michael Fellinger * This changes usage of Ramaze::Inform with Ramaze::Log and places a deprecation notice. Ramaze::Informing is now Ramaze::Logging darcs-hash:20080303051154-cbc08-cdfa00ae47add9f93b2e5534e9dc77025153f890.gz [52d531d | Mon Mar 03 04:09:00 UTC 2008] Michael Fellinger * Make docs in contrib/email nicer darcs-hash:20080303050942-cbc08-65e9ae03fe768e61cd9ed107f464e9239b4a33e6.gz [5667712 | Sat Mar 01 18:17:00 UTC 2008] Michael Fellinger * Introduce Current, mikan approaches steadily darcs-hash:20080301191710-cbc08-427401ad8c6dfa7f2f799a93fbed2ac2b55b9fc7.gz [62e3ee1 | Sat Mar 01 18:13:00 UTC 2008] Michael Fellinger * Introduce Ramaze::ThreadAccessor darcs-hash:20080301191333-cbc08-92add5177e7841611ad9eee838822f4210f6f6bd.gz [b037c57 | Sat Mar 01 00:19:00 UTC 2008] Aman Gupta * Add Request#pretty_print and have controller/error.rb use it in error messages darcs-hash:20080301011933-569a4-bbc25f9407967ce6309b1facd326be67f6433b10.gz [f020d51 | Sat Mar 01 00:19:00 UTC 2008] Aman Gupta * Move proc/scope.rb to proc/locals.rb and update implementation to rely on binding/locals.rb darcs-hash:20080301011907-569a4-1405e40aba1fe9358325b84e1b06e63d3f9197eb.gz [b7fa8e4 | Fri Feb 29 20:59:00 UTC 2008] ara.t.howard * Ensure Haml scope is passed such that both instance methods AND locals are resolved. darcs-hash:20080229215941-4585f-91cf69c930c3c6dd1089b05815972a2ad6443e7b.gz [db7bc6d | Fri Feb 29 20:49:00 UTC 2008] ara.t.howard * Adds Proc#locals, extract local_variables as hash from proc object. darcs-hash:20080229214903-4585f-54673c13dd7d5acdcd3deb4cf4415a3776d434f1.gz [24b8919 | Fri Feb 29 20:14:00 UTC 2008] ara.t.howard * Add Binding#locals to return a hash of local vars and their values. darcs-hash:20080229211409-4585f-6411eb509f7b5af469075e8d0df5e469ca15b4d9.gz [f6ada7a | Fri Feb 29 20:08:00 UTC 2008] ara.t.howard * Adds Object.scope to produce clean binding where eval('self',object.scope) == object. darcs-hash:20080229210813-4585f-5b00bfc94f6961c6990550dd7d59e7d1e902f20d.gz [d9186d1 | Fri Feb 29 18:53:00 UTC 2008] Aman Gupta * render_template now sets ivars in addition to local variables darcs-hash:20080229195326-569a4-c1eb6e917769a4b1a1d4965d89d1b229d092e5ea.gz [a2046f5 | Fri Feb 29 18:50:00 UTC 2008] Aman Gupta * Haml update- remove support for locals in :haml_options, set :filename so template names show up in stack traces, pass in binding so locals work darcs-hash:20080229195055-569a4-5c86fe805a2ef76aeae42051137e6dff18ad3088.gz [a56e978 | Fri Feb 29 16:15:00 UTC 2008] ara.t.howard * Fixes local handling for latest haml version. Haml no longer supports passing locals to Engine new, this patch extracts that info (trait[:haml_options]) and passes it in at the right moment. It also extracts local vars from the passed binding and automatically passes them to the render call, which is the new api for passing Haml locals. Hopefully this can be gutted when local support to render_template is removed but, for now, this just makes tests pass and supports latest Haml api. darcs-hash:20080229171550-4585f-e12a34d6c9d4d3c727f3373b711ea2893bbb2a75.gz [adb49e2 | Thu Feb 28 06:12:00 UTC 2008] ara.t.howard * Tweak render_partial to use real locals instead of method_missing. Eval black magic. darcs-hash:20080228071234-4585f-82fee0588f3968cc068b83580b1c50f9f657ea59.gz [46c4c4e | Thu Feb 28 04:24:00 UTC 2008] Aman Gupta * Fix Dispatcher::File to serve files with spaces in filename darcs-hash:20080228052434-569a4-2b001938327c8452fc783a7bb310d04d520be39b.gz [daf20a9 | Thu Feb 28 04:22:00 UTC 2008] Aman Gupta * Add cleaner, more helpful to_s/inspect to Ramaze::Request darcs-hash:20080228052231-569a4-8801ab40857aff4f71e451ec2ff8446c0db106c2.gz [6f02d9a | Thu Feb 28 03:50:00 UTC 2008] Aman Gupta * Add dispatch.fcgi, .htaccess and start.ru (for thin) to proto darcs-hash:20080228045021-569a4-397d3847df1d491c1983ff1350ee0badda1e1edb.gz [40faa31 | Thu Feb 28 03:10:00 UTC 2008] Aman Gupta * Minor improvements to proto's error template darcs-hash:20080228041054-569a4-2d7235da805ae5d6b1c5613d9702df535eea5b53.gz [427e949 | Thu Feb 28 03:08:00 UTC 2008] Aman Gupta * Clean up String#unindent implementation darcs-hash:20080228040835-569a4-f651cdceb370940b70fde6df17d4b9eaa8dd222c.gz [ff95f25 | Thu Feb 28 02:58:00 UTC 2008] Aman Gupta * Add session.client for session variables stored in client-side cookies darcs-hash:20080228035845-569a4-a7579e38093363e977f6285d29a8123c3dec76c0.gz [6fe3724 | Thu Feb 28 02:09:00 UTC 2008] ara.t.howard * Move RedirectHelper#redirected? storage from trait to Request.current because I'm an idiot. darcs-hash:20080228030944-4585f-3747377b794405f2dd9c5ee7e8f6c961d530d1e8.gz [423166c | Thu Feb 28 01:22:00 UTC 2008] ara.t.howard * Add RedirectHelper#redirected?, prevents 2x redirect when redirect used inside AspectHelper#after block. darcs-hash:20080228022207-4585f-51abafdad2c58f49f0f48f1136415d0326a84afe.gz [6c3ebca | Wed Feb 27 20:27:00 UTC 2008] ara.t.howard * Ensure AspectHelper.after is run after actions, even in the case of a call to redirect. darcs-hash:20080227212739-4585f-025d2f86971384ef48895c8fe3e95f19d8dcc87d.gz [0e7c80b | Tue Feb 26 15:20:00 UTC 2008] ara.t.howard * Handle informing on exceptions where ex.backtrace==nil. darcs-hash:20080226162000-4585f-317f4e756054c10ba8059b406a8e995e98e2734b.gz [3a8a60f | Sun Feb 24 07:50:00 UTC 2008] Michael Fellinger * Small style change for rapaste, don't let the paste_head get in the way of the paste when retracted darcs-hash:20080224085018-56f1f-1270f16f10ebe13de95bdf2c2f40b1160fada309.gz [f5ae2a1 | Sat Feb 23 07:06:00 UTC 2008] Michael Fellinger * Merge most of the requires for stdlib and already required files into ramaze.rb darcs-hash:20080223080637-cbc08-1bc010f127b4c62de7a436a5b84c7b63e3bb87e8.gz [239bb60 | Sat Feb 23 04:03:00 UTC 2008] ara.t.howard * Make AspectHelper#after fire *after* layouts are rendered - and *remove text wrapping* darcs-hash:20080223050310-4585f-a4d24f0ccc4bb57e631903f904937e30caeac2c3.gz [80909c0 | Sat Feb 23 03:42:00 UTC 2008] Michael Fellinger * And make our helper ignore line mac-safe... darcs-hash:20080223044215-cbc08-c7765bdf2e00ca45442c23cb5c76f86e8b6a5641.gz [5df2544 | Sat Feb 23 01:36:00 UTC 2008] Michael Fellinger * Alright, Helper::IGNORE is now Helper::trait[:ignore] and has a default. darcs-hash:20080223023625-cbc08-4b91ec6ed0bc1ad3efde43dd6988a7c63d6d6c6d.gz [d39bc1a | Tue Feb 19 10:19:00 UTC 2008] Michael Fellinger * Support for deeply nested request params. darcs-hash:20080219111921-cbc08-29bdc13a452aaf0e374155fe66d8093def8e5f86.gz [9b5f9ed | Tue Feb 19 10:18:00 UTC 2008] Michael Fellinger * Bacon version 0.9 darcs-hash:20080219111852-cbc08-60342e6c83d5867db38957cb8c18e3c73e920b11.gz [2a63426 | Fri Feb 22 05:45:00 UTC 2008] Michael Fellinger * This introduces Helper::IGNORE - the ultimate solution for all your my-specs-don't-pass-because-spec-layout-is-weird troubles darcs-hash:20080222064546-cbc08-7cc623390b545b0fd2a75d5fa139bb2406b9f51a.gz [0064666 | Fri Feb 22 05:10:00 UTC 2008] ara.t.howard * Controller.template accepts options to allow files, etc to be specified darcs-hash:20080222061000-4585f-54155f4c0412d11cda75cb848bfa5b70e00b9efd.gz [4518f68 | Tue Feb 19 21:16:00 UTC 2008] ara.t.howard * Forward AspectHelper#XXX(*meths) to XXX_all() when meths empty. darcs-hash:20080219221607-4585f-12c1c035b5dca203bc171f70d6211804527a428f.gz [af48c32 | Fri Feb 22 05:06:00 UTC 2008] Michael Fellinger * Make rubygems optional for Rakefile darcs-hash:20080222060614-cbc08-f77344500046503aa863532aad0d59ac6313ebbf.gz [665e61e | Thu Feb 21 15:33:00 UTC 2008] Michael Fellinger * A 'better' helper lookup darcs-hash:20080221163301-cbc08-9e5a6a4645b3a2d87539d37f381dd7812ae58e4d.gz [d97ed5b | Thu Feb 21 15:32:00 UTC 2008] Michael Fellinger * Fix width for specs, we got 100+ now darcs-hash:20080221163230-cbc08-d00423ddec6c72f73fa23ac3b385563b6ed119b4.gz [cbffa05 | Wed Feb 20 20:33:00 UTC 2008] Jonathan Buch * Add Infomer module using the stdlib logger darcs-hash:20080220213303-2c51e-e988ccb544459fafa9393c7729077bf1936ceb3e.gz [c2a058f | Tue Feb 19 18:07:00 UTC 2008] ara.t.howard * Add #to_s for c(), h() and misc cgi helper meths. This is required because CGI.escape and co. do *NOT* cast incoming arguments to strings even though that is the only thing they can operate on. Without this patch views get fugly quick as they become littered with url_encode parts.map{|part| part.to_s} vs url_encode parts darcs-hash:20080219190717-4585f-96dc1003e024ea4fa72b28a297bf282ae2593398.gz [fb1b7ab | Tue Feb 19 14:31:00 UTC 2008] Jonathan Buch * escape R() arguments darcs-hash:20080219153105-2c51e-43902b484ed83aa9ded61cbf66a16f634ae77c44.gz [b881fc5 | Tue Feb 19 14:45:00 UTC 2008] Jonathan Buch * sourcereload trybugfix, returned not expanded path instead of filename darcs-hash:20080219154540-2c51e-ab8cd055a14ae185b7adc31a401e4236f1c8f044.gz [c978ed1 | Tue Feb 19 14:08:00 UTC 2008] Jonathan Buch * Forgot to add template file for actionless-templates spec darcs-hash:20080219150853-2c51e-8bf5ec91419c3654721b6614428ca31b453ec8fe.gz [048031c | Tue Feb 19 11:09:00 UTC 2008] Jonathan Buch * Introduce actionless_templates, don't render templates without attached method When working with many render_template calls, it is rather messy to create a method for each of the 'partial templates', if they have to be 'protected', i.e. partials for the Admin view might be accessable without going through 'check_auth()'. Thanks goes to Ryan Grove for catching this. Introduces new Global.actionless_templates which is true by default, which makes it backwards compatible. darcs-hash:20080219120931-2c51e-8b83e3026e5dbd426f4501b40e6b9ffdac2799c2.gz [b30cc44 | Tue Feb 19 09:57:00 UTC 2008] Jonathan Buch * Fix missing require pathname for new sourcereload patch darcs-hash:20080219105716-2c51e-67530879f23dd725a8ec46baf374ecd6f2ae3350.gz [9095ea6 | Tue Feb 19 09:54:00 UTC 2008] Jonathan Buch * Adding Joe Holt to AUTHORS darcs-hash:20080219105434-2c51e-f782b17d84a493cbef7fcf56052542e34c0c46b1.gz [aa4a4ba | Tue Feb 19 01:57:00 UTC 2008] Michael Fellinger * Fixing sourcereload with suggestions from Joe Holt, this should also work for windows without any special handling. darcs-hash:20080219025712-cbc08-8feb70c88b9a5c7d668aa4c15deb1ed56dfad348.gz [e0224b0 | Sun Feb 17 14:04:00 UTC 2008] Michael Fellinger * PLATFORM should be RUBY_PLATFORM for compatibility darcs-hash:20080217150428-cbc08-8358e5a02d3441cc7b3cfa3b51bf4da985a35732.gz [1e7ea54 | Sat Feb 16 16:35:00 UTC 2008] Michael Fellinger * Improve rake author dependend tasks by using `darcs show authors` darcs-hash:20080216173537-cbc08-adb7333b5ccd00220b154931092751a08393a233.gz [64250ab | Sat Feb 16 15:56:00 UTC 2008] Michael Fellinger * Make our specs pass again (reminder, never push without specs) darcs-hash:20080216165659-cbc08-08a7f914a378838fe1e819b3a689bfb4f8a4cb13.gz [4a0f994 | Sat Feb 16 15:31:00 UTC 2008] Michael Fellinger * to_s before using CGI::escape darcs-hash:20080216163159-cbc08-08488c2af8f5d9f7ebe1943d3b10c2af299a8f46.gz [38f10fd | Sat Feb 16 08:35:00 UTC 2008] Jonathan Buch * lower "The Action" info output to debug. darcs-hash:20080216093528-2c51e-9ce712800a80c3b6bf9e9beb4516cf0aa980e5e7.gz [4386de7 | Sat Feb 16 08:34:00 UTC 2008] ahoward <> * Add Tagz template engine darcs-hash:20080216093433-303c9-e47915af4a5ac883fe10964dcfa2edd8e8a26e1f.gz [d22eabc | Sat Feb 16 08:33:00 UTC 2008] Michael Fellinger * This patch escapes both path and k=v pairs in R() darcs-hash:20080216093315-cbc08-902b1caa261a3e12eeb3172c8e960635843be9b0.gz [f762552 | Sat Feb 16 08:32:00 UTC 2008] Michael Fellinger * [partial] bugfix, leftover from Action-stack conversion darcs-hash:20080216093209-cbc08-f3f644789be3cc85881370f8e8e9485a8dd8b474.gz [e15d140 | Sat Feb 16 08:31:00 UTC 2008] Michael Fellinger * [wictacular] fix exists/nonexists (+add spec), WikiEntry[] is pure lookup now, does not return 'empty entry' anymore darcs-hash:20080216093103-cbc08-39c06a28d747afb701275744aa8d7abee4176a94.gz [6250700 | Sat Feb 16 08:30:00 UTC 2008] Michael Fellinger * Adding Helper::LOOKUP where every helper that wants to have its public methods shown to the web can add itself. This makes the exclude_action_modules trait unnecessary. Please note that any module you include into your controllers doesn't get shown to the web either, add them to the LOOKUP if you want that. darcs-hash:20080216093016-cbc08-12f2b44de30e6af3628be2ab8b657680682c6281.gz [8dbc460 | Sat Feb 16 08:29:00 UTC 2008] Michael Fellinger * Small improvment in escaping in Wiktacular darcs-hash:20080216092918-cbc08-997f872cdc61c55504fd637879ec5ee97cdd9090.gz [9befc44 | Sat Feb 09 11:31:00 UTC 2008] Michael Fellinger * Adding Action#stack and Action::stack darcs-hash:20080209123159-56f1f-1fe56b63f7aa33b4df04e4f3eb70c6d476292ee4.gz [0f9b243 | Thu Feb 07 06:30:00 UTC 2008] Aman Gupta * Add Ebb adapter and fix benchmark/test darcs-hash:20080207073007-569a4-ba39d302aefc7608758dbdf6cd73c9f309201d3e.gz [a20e439 | Wed Feb 06 15:45:00 UTC 2008] Michael Fellinger * Updating authors darcs-hash:20080206164534-cbc08-40c2615fde2e11558bf713c0b0a23ec51d325a18.gz [4ba8e11 | Wed Feb 06 15:44:00 UTC 2008] Michael Fellinger * A few changes to the sourcereload fix darcs-hash:20080206164453-cbc08-89cb29dd79daf9fda9ac137669e752eca2217a24.gz [e79f73a | Wed Feb 06 11:06:00 UTC 2008] leo.borisenko * Fixing SourceReload for working on MS Win darcs-hash:20080206120616-a7715-c986322a80817f609cc320f9ae02bb51e42832e3.gz [506eaef | Wed Feb 06 08:41:00 UTC 2008] Michael Fellinger * Fix pager link for rapaste darcs-hash:20080206094143-cbc08-204156e8a17b9af8f52975f0b06b9592c3dfcb25.gz [dfe9126 | Wed Feb 06 08:41:00 UTC 2008] Michael Fellinger * Small adjustment to announcement darcs-hash:20080206094132-cbc08-eb127b35907285cdef3516f365d9bed7c4c25931.gz [e254764 | Wed Feb 06 08:41:00 UTC 2008] Michael Fellinger * Adding Jeremy Evans to authors darcs-hash:20080206094122-cbc08-dbfad2c925cd8257b165cd84f0406e3a8820f374.gz [349f6c3 | Mon Feb 04 13:46:00 UTC 2008] Keita Yamaguchi * Catch :respond in Action#process darcs-hash:20080204144617-7958a-a93cfe1fa0e2fe40b651769f0dc9e2f9d7bb1b0e.gz [99c642c | Mon Feb 04 17:00:00 UTC 2008] Jonathan Buch * todolist tutorial, add escaping to user provided title + spec darcs-hash:20080204180054-2c51e-bcd708bd90a8484f6f84828781b0a68b011d4c7f.gz [5d7bdd7 | Mon Feb 04 09:41:00 UTC 2008] Michael Fellinger * Adding suite for Nagoro darcs-hash:20080204104140-56f1f-04580ac47e4b7b9b5cce76785e0357b72a775648.gz [51e51a8 | Mon Feb 04 05:13:00 UTC 2008] Michael Fellinger * Adding Global#mode, for your very personal use. darcs-hash:20080204061301-cbc08-7cca9135a38f2037bd66a5a6a3b4a95aed9ea2eb.gz [2fd4bb0 | Sun Feb 03 22:51:00 UTC 2008] Michael Fellinger * Uniform Controller@template_root as Array to make handling it the same for everything. darcs-hash:20080203235120-cbc08-537197e08097063d9d17664e98afa625e136c6a9.gz [bb610ea | Sun Feb 03 22:48:00 UTC 2008] Michael Fellinger * Remove useless comment darcs-hash:20080203234819-cbc08-c53226b90e34f24e369b6230b835e74b636535f4.gz [94a210a | Sun Feb 03 21:36:00 UTC 2008] Jonathan Buch * Add require to load Ramaze::Store for tutorial darcs-hash:20080203223614-2c51e-7e5820ea345e06246d4096a6d83b2a40ff5b9c42.gz [fdb0b52 | Sun Feb 03 19:10:00 UTC 2008] Aman Gupta * Fix multiple template_root handling + specs darcs-hash:20080203201036-569a4-cf7ac35e774edc79d9501d519e6f67236e9da32c.gz [4cf4b75 | Sun Feb 03 13:26:00 UTC 2008] Keita Yamaguchi * Fix Amrita2 and Markaby benchmark scripts darcs-hash:20080203142625-7958a-e34bfb6de03b97ee2f08096e8aba37fde130294e.gz [bed374f | Sun Feb 03 16:25:00 UTC 2008] Michael Fellinger * Only report and test connections for adapters that actually use a conventional socket. darcs-hash:20080203172513-cbc08-fdb51bc623cdab0e4835d384f5d7f2fb34040b29.gz [9cb98fd | Sun Feb 03 11:23:00 UTC 2008] Keita Yamaguchi * Remove an unnecessary line at the RedCloth bnchmark script darcs-hash:20080203122332-7958a-d6c56ab54ec22985954a2c236bc7f5206f590f2f.gz [3125143 | Sun Feb 03 09:18:00 UTC 2008] Keita Yamaguchi * Add benchmark scripts for Amrita2, Tenjin, etc. darcs-hash:20080203101838-7958a-c651b23a5865860ca617eb265371983043075d7f.gz [2185105 | Sun Feb 03 08:27:00 UTC 2008] Aman Gupta * Refactor routing with Route.resolve(path) => new_path darcs-hash:20080203092708-569a4-6dbca256a032df956602eaa5a67110ff32dc7269.gz [03cb67a | Sun Feb 03 07:56:00 UTC 2008] Aman Gupta * Existing actions take priority over routes darcs-hash:20080203085616-569a4-b9e2f7f0962a40b6b950207f4183440036c9e8e1.gz [0e144e0 | Sun Feb 03 07:39:00 UTC 2008] Aman Gupta * Update Rapaste to use Ramaze::Route instead of Ramaze::Contrib::Route darcs-hash:20080203083958-569a4-77d6fdcb994dabafa4a04bba4b32795f91b2fa12.gz [6190d6f | Sun Feb 03 06:13:00 UTC 2008] Aman Gupta * Add Ramaze::Route.clear to wipe out routes darcs-hash:20080203071354-569a4-2d77f61ad1f992850080f0931c7d56014dcc8fe9.gz [d072cae | Sun Feb 03 05:59:00 UTC 2008] Aman Gupta * Update tutorial to use Ramaze::Store instead of Store darcs-hash:20080203065950-569a4-9ec306894aa3fa93041e7ed2afd8ff39f916f096.gz [1921d11 | Sun Feb 03 05:55:00 UTC 2008] Aman Gupta * Move Ramaze::Route docs so rdoc can find them darcs-hash:20080203065539-569a4-35e59c1a9dff7359897baa9498391f6992a6fa8c.gz [5dd5551 | Sun Feb 03 05:51:00 UTC 2008] Michael Fellinger * Add PartialHelper to default darcs-hash:20080203065128-cbc08-cf250003f385ec91778b751c3455a74e30a61a68.gz [a14cab7 | Sun Feb 03 04:43:00 UTC 2008] Michael Fellinger * Using the #c or #h method now also escapes dangerous code darcs-hash:20080203054310-cbc08-798c9a221575eefa4fe2918f6bff264b6567b08d.gz [27d04c0 | Sat Feb 02 13:21:00 UTC 2008] Keita Yamaguchi * Add the method Ramaze::Gestalt#tag darcs-hash:20080202142120-7958a-e6146298c31aa78cd8b9858c5dcf4e9eeb2c01f3.gz [623667a | Sat Feb 02 14:02:00 UTC 2008] Jonathan Buch * Revise automapping rules, My::TestController => /my/test Instead of swallowing the 'constant path', map it to the url darcs-hash:20080202150254-2c51e-ca5b5f0c17f6de91ad4167a00f7eee809dd8fcc0.gz [a07d145 | Sat Feb 02 14:00:00 UTC 2008] Jonathan Buch * Make Contrib an essential Recognizes `Ramaze.start :contrib => [:gzip_filter]` Calls .shutdown on contrib modules which support it Add some documentation darcs-hash:20080202150026-2c51e-dc07fe56ce32a74afca889027563d91eef6a8502.gz [bc0d3cc | Sat Feb 02 13:54:00 UTC 2008] Jonathan Buch * render_template recognizing multiple template roots darcs-hash:20080202145422-2c51e-db219a638ea14faf1e88ee9c90df72873f8eb64f.gz [d3a3d4b | Sat Feb 02 13:54:00 UTC 2008] Jonathan Buch * Warn when overwriting instance variables within layout controller darcs-hash:20080202145407-2c51e-78fcc36c7157f1350354e8321b8baba03175e03f.gz [736734f | Tue Jan 29 21:05:00 UTC 2008] Jonathan Buch * layouts, only set instance variable from current controller if not allready defined darcs-hash:20080129220556-2c51e-857ff9d7f3d6e5148c9b5b2659bb701c672cec83.gz [9ce516d | Fri Feb 01 22:01:00 UTC 2008] Jonathan Buch * Also use camel_case in helper instead of .capitalize darcs-hash:20080201230143-2c51e-da8bf46677cce1b00c9ed1e48e372f1040952ae1.gz [e415061 | Fri Feb 01 21:33:00 UTC 2008] Jonathan Buch * Make .contrib behave like #helper, searching for contrib files in app subdir * reverse lookup of files, first C extensions then .rb files to match normal ruby require rules more closely in both contrib and helper. * Add contrib docs. darcs-hash:20080201223343-2c51e-48b8b84865679b7e3f5d4120a7e5dc48b34badb1.gz [4c9ea42 | Thu Jan 31 11:16:00 UTC 2008] Michael Fellinger * Don't check syntax for plain text in rapaste darcs-hash:20080131121613-56f1f-5162e7c937f6137807c67611f9db26588aaa6d15.gz [48344f0 | Thu Jan 31 11:13:00 UTC 2008] Michael Fellinger * Adding some exts to rapaste routes darcs-hash:20080131121352-cbc08-6b0518cdfb687d3e8d91838b87b2362ff4fccdfd.gz [64a7308 | Wed Jan 30 18:37:00 UTC 2008] Michael Fellinger * Update the html for tutorial darcs-hash:20080130193730-56f1f-6e6b057b338690bcc0735be8d04c76a29bef4fc9.gz [0608c7b | Wed Jan 30 18:05:00 UTC 2008] Michael Fellinger * should have overlapping template extensions ;) darcs-hash:20080130190531-56f1f-002746c9296fe5ba5fa4c970a691e71bdd5db7bf.gz [f65696d | Wed Jan 30 18:03:00 UTC 2008] Michael Fellinger * Add rake task 'apply' for easier patch sending darcs-hash:20080130190350-56f1f-1241d8df26917f557774123c8bd06bc88fa008b9.gz [5cadbc5 | Wed Jan 30 17:59:00 UTC 2008] Michael Fellinger * Fix proto/spec darcs-hash:20080130185955-56f1f-2703c247c1ca62f31a119841c61df6d1b97839ef.gz [6f0dc26 | Wed Jan 30 15:01:00 UTC 2008] Jonathan Buch * Add spec to test consistency of template engine extensions darcs-hash:20080130160156-2c51e-fe7fcc2a97ec0baa1590bd892faa40720e6e507b.gz [880e3c9 | Wed Jan 30 03:37:00 UTC 2008] Keita Yamaguchi * Add the Tenjin templating engine. darcs-hash:20080130043707-7958a-3d8c41c115b5b1d266358470d7a151f5fce7ceaf.gz [a44c713 | Tue Jan 29 21:04:00 UTC 2008] Jonathan Buch * LinkHelper: use :title after normal argument, add specs defining the current behaviour in detail darcs-hash:20080129220432-2c51e-7039d539a39487a94a26b4e533f9f7e580252510.gz [d02bd33 | Tue Jan 29 21:02:00 UTC 2008] Jonathan Buch * Let specific layouts override layout :all + specs darcs-hash:20080129220251-2c51e-f219bf919b58c1fb4974314b4bf08f32b660ccad.gz [588681c | Tue Jan 29 13:46:00 UTC 2008] Jonathan Buch * LinkHelper: Reenable :title use for text (if no :text given), repair CGI.escape'ing url elements + spec darcs-hash:20080129144644-2c51e-c4ae8b1392fbbce9b37d96bd42c401ba577d2628.gz [4a93bb4 | Tue Jan 29 13:34:00 UTC 2008] Jonathan Buch * Fix Whitespace, fix require in template_redcloth spec if erubis is missing darcs-hash:20080129143447-2c51e-988683d5d50c9f26625f98185d6a6ccfabaa759f.gz [fdb1590 | Mon Jan 28 21:24:00 UTC 2008] Ryan Grove * fix_A_allow_title_attr darcs-hash:20080128222411-04984-5c19e60ef282b2e2497d7de0d71179dde87e6364.gz [f47d15a | Tue Jan 29 04:51:00 UTC 2008] Michael Fellinger * Update examples/blog to new layout darcs-hash:20080129055118-cbc08-29cf212fac68adcbaa7158cc5061c837cb2273ad.gz [0a2e8cf | Tue Jan 29 04:38:00 UTC 2008] Michael Fellinger * Allow for multiple template_roots to be searched for templates darcs-hash:20080129053809-cbc08-cd954ab35a5f67db0f2925e5247f7085b57088b3.gz [18e57c3 | Tue Jan 29 04:37:00 UTC 2008] Michael Fellinger * Repo Version 0.3.6 darcs-hash:20080129053756-cbc08-95949eae147154121e0b5d9273b376d42c73f6ab.gz [d6b60a8 | Mon Jan 28 17:41:00 UTC 2008] Keita Yamaguchi * Modify the '>' position at AuthHelper. darcs-hash:20080128184158-7958a-ae0ad88d41846474ec4742a074a34aafc48b835f.gz [479cf2c | Mon Jan 28 16:26:00 UTC 2008] Keita Yamaguchi * Update the Thin adapter for Thin 0.6.1. darcs-hash:20080128172658-7958a-8d46ed0520ca3fb9e02b9f5c19f04210486bf209.gz [0cab807 | Fri Jan 25 16:23:00 UTC 2008] Jeremy Evans * add_scgi_adapter.diff darcs-hash:20080125172341-d6fb4-af71493cb9d76ad49f058ad04d12da9ace203e7c.gz [dd6a30e | Mon Jan 28 05:44:00 UTC 2008] Michael Fellinger * Version 0.3.5 darcs-hash:20080128064456-cbc08-4cd675f92270e0dd01ffa60f46b87e93f41595a7.gz [8b904bc | Mon Jan 28 05:42:00 UTC 2008] Michael Fellinger * Update CHANGELOG darcs-hash:20080128064244-cbc08-c9ca69a404b30a68ef515c9fe0bb836ac093b126.gz [c015439 | Mon Jan 28 05:42:00 UTC 2008] Michael Fellinger * jQuery 1.2.3b darcs-hash:20080128064225-cbc08-35f21afa65efa719e7f8b096c0b2336ee9eface8.gz [389fe27 | Mon Jan 28 01:27:00 UTC 2008] jesuswasramazing.10.pistos * Grammar rephrasing on 0.3.5 announcement. darcs-hash:20080128022725-55b44-aa79b2337bd8ce05df3f2c54cb0009bcbc939e03.gz [32f338b | Mon Jan 28 00:34:00 UTC 2008] Aman Gupta * Run rake authors and update announcement for release darcs-hash:20080128013422-569a4-c7a27023b05b52e9d5d3484db7e9fec5fc55ff05.gz [a7a5142 | Sat Jan 26 20:11:00 UTC 2008] Chris Duncan * Tidy up the spec pretty output change darcs-hash:20080126211103-96e64-aeb91da01fe47eafd668ca125a34a1f3823e4a3d.gz [6539e70 | Sat Jan 26 07:15:00 UTC 2008] Chris Duncan * Print Bacon contexts and assertions when using pretty output darcs-hash:20080126081545-96e64-5642a7ea5f33ae1c5ac63437142f0d79e6dc5468.gz [4d2f8af | Sun Jan 27 23:23:00 UTC 2008] Aman Gupta * Only set Content-Type for builder if we are in a response darcs-hash:20080128002318-569a4-f292e19e5e0113e0f734be1f9ede9b2d2e05601a.gz [90ea88f | Sun Jan 27 01:53:00 UTC 2008] Aman Gupta * Create empty model directory in Tool::Create since gem packaging removes empty directories darcs-hash:20080127025321-569a4-93389b06af839c275477ba44085abfd6b6d8bcec.gz [396c3ba | Sun Jan 27 01:38:00 UTC 2008] Aman Gupta * Improve render_template: warn if file doesn't exist, figure out file extension if not provided darcs-hash:20080127023832-569a4-c5a34e025a1a05889bfeeb3fa8ea8a945df115d6.gz [ee5ac85 | Sun Jan 27 01:20:00 UTC 2008] Aman Gupta * Standardize all examples- remove copyright notice, add require 'rubygems' and Ramaze.start darcs-hash:20080127022044-569a4-36f0eec7c4fd7bdd7f953acd74a11067e15bdeeb.gz [07588aa | Sun Jan 27 01:06:00 UTC 2008] Aman Gupta * Add spec for sub-classed MainController darcs-hash:20080127020645-569a4-6a4373a8f09933ad0f1d070f95c4f01d869f194f.gz [0299795 | Sun Jan 27 00:58:00 UTC 2008] Aman Gupta * Move Ramaze::Contrib::Route to Ramaze::Route, add simple string router and alternative Ramaze::Route('name') do end syntax for lambda routers darcs-hash:20080127015824-569a4-5b8ac414ddd231efc6627dd14bcf770f8d3a724a.gz [2f9a97a | Sat Jan 26 23:49:00 UTC 2008] Aman Gupta * template_root should take symbols as argument darcs-hash:20080127004927-569a4-76b57e4aa1ea9aa621ed77d2817bf6f833e24c1e.gz [cd7a0da | Sat Jan 26 23:42:00 UTC 2008] Aman Gupta * Clean up session spec darcs-hash:20080127004224-569a4-0ae4f7a90f3fe3179f6c9186a5123d5ca0874ec3.gz [dc5ee1e | Sat Jan 26 19:16:00 UTC 2008] Michael Fellinger * Correcting Action#engine darcs-hash:20080126201611-cbc08-d4e3ff089c22c19e88344b74724d1440bf715611.gz [de8d2ea | Sat Jan 26 19:08:00 UTC 2008] Michael Fellinger * Minor improvments for identity helper darcs-hash:20080126200816-cbc08-a7dc5d3dcf0245b20d82c0868687d48dfaf48db5.gz [dcbf66e | Sat Jan 26 18:36:00 UTC 2008] Jonathan Buch * Allow (non leading) dots in template extensions darcs-hash:20080126193630-2c51e-bfe078dfd9660b574e1d5c8b2e974ea0eef8f651.gz [744d5c0 | Sat Jan 26 06:50:00 UTC 2008] Michael Fellinger * Add missing brace to auth helper darcs-hash:20080126075046-56f1f-f10d8ca43b6a0e90cc190ba5330ad0d08fd19544.gz [bc4b3d8 | Tue Jan 22 05:17:00 UTC 2008] Michael Fellinger * Adding MarukuHelper darcs-hash:20080122061719-cbc08-1db07de978e6f5baca5f4aa6873551f9442ece12.gz [aeb26f4 | Mon Jan 21 07:19:00 UTC 2008] Keita Yamaguchi * Add the RedCloth templating engine. darcs-hash:20080121081922-7958a-e96796b2840f601cd3c3ca611763a335f76bb622.gz [8c135a5 | Sun Jan 20 18:42:00 UTC 2008] Aman Gupta * Update doc/AUTHORS darcs-hash:20080120194247-569a4-bac34310c33bc36af2dc974cffdb833e7fc5cf55.gz [5e015e5 | Sun Jan 20 18:41:00 UTC 2008] Aman Gupta * Session::IP_COUNT = nil to disable ip counting in sessions darcs-hash:20080120194132-569a4-3e6fa256bfc24b919b79ea54d101779d51cba040.gz [915be93 | Sun Jan 20 07:55:00 UTC 2008] Michael Fellinger * A couple of improvments for rapaste, adding diff ability (incomplete due to style problems), adding rake task for spec, modifying directory layout for new proto darcs-hash:20080120085542-56f1f-ee0e78abdb879494101fad63a7e3efe97bd8dae0.gz [1eae399 | Sun Jan 20 06:51:00 UTC 2008] Keita Yamaguchi * Update the amrita2(2.0.0) template engine. darcs-hash:20080120075113-7958a-d946576b2a8e9f151555ce409d54df27616d28ad.gz [df14dfe | Sat Jan 19 18:40:00 UTC 2008] Michael Fellinger * Small improvments to doc/GPL from http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt darcs-hash:20080119194039-cbc08-d0bba11d22f41a5b9beeba20e0365ef2c862f770.gz [4b99128 | Fri Jan 18 21:49:00 UTC 2008] Michael Fellinger * Fixing up IdentityHelper for latest ruby-openid-2.0.3 darcs-hash:20080118224955-cbc08-0835994bf5dda2f202d1a86d3716a3f3a80b95d4.gz [b71c7ac | Fri Jan 18 15:31:00 UTC 2008] Michael Fellinger * Changing some stuff in the tutorial to make it comply to latest proto layout (hope it's all we need to change) darcs-hash:20080118163158-56f1f-19a51a6f63e5bc80e42ef8f9a22c74018d215b9b.gz [de36124 | Thu Jan 17 21:54:00 UTC 2008] Jonathan Buch * add testcase for params, 'should handle valueless params' darcs-hash:20080117225407-2c51e-c59c5330487275fceaa6a061ebad88f46a911d4d.gz [0b0a8df | Wed Jan 16 16:56:00 UTC 2008] jesuswasramazing.10.pistos * Fixed EmailHelper. darcs-hash:20080116175626-55b44-6605402532df78458d1b2ab6d0037d71170d16dc.gz [9af0d9f | Tue Jan 15 02:18:00 UTC 2008] jesusisramazing.10.pistos * Refactor of EmailHelper. darcs-hash:20080115031836-f2a08-080480260626250b807c32851be578c6d4ea8a0f.gz [869a09a | Tue Jan 15 02:03:00 UTC 2008] jesuswasramazing.10.pistos * Refactored file upload example. darcs-hash:20080115030342-55b44-f7ca96c1f4c3fb85d3d7972af2cab3f56b14c14b.gz [ae8d964 | Tue Jan 15 02:01:00 UTC 2008] Michael Fellinger * Give rapaste GET search and a nice search form in the layout. darcs-hash:20080115030123-cbc08-fe64c4f39f859bfb78619c4bf7a924c417ec484e.gz [a9dbb5f | Mon Jan 14 18:21:00 UTC 2008] jesuswasramazing.10.pistos * Added search functionality to Rapaste. darcs-hash:20080114192104-55b44-542912f712d7d60cae201cb78a6ab88f1c6e0164.gz [e3aed36 | Mon Jan 14 16:10:00 UTC 2008] Michael Fellinger * Update authors and nicer output of rake patchstat darcs-hash:20080114171031-cbc08-207986b89d7d6a117c2f39accd84c725653a94bd.gz [9e1f9d7 | Sun Jan 13 07:48:00 UTC 2008] Keita Yamaguchi * Add Content-Language based localization. darcs-hash:20080113084846-7958a-659d4e0d7a89bab4748e023a0b54aabea75abc2e.gz [c346b8c | Sun Jan 13 22:05:00 UTC 2008] rff.rff * tests for if-modified-since and etags darcs-hash:20080113230508-16231-b5863b7f3b598c152b78ba5bdde925b4380a148c.gz [146d95b | Sun Jan 13 22:02:00 UTC 2008] rff.rff * support if_modified_since and if_none_match as special headers in mock_request darcs-hash:20080113230226-16231-eb290ac45e1b8e110bf97c198b7fe5cf30196dee.gz [5aac314 | Sun Jan 13 20:52:00 UTC 2008] rff.rff * Unnamed patch this patch adds shallow etag support. The implementation is completely untested though darcs-hash:20080113215239-16231-f0fdd64e92c2ff81d0d6caccac56ed346ace0864.gz [c59c298 | Sat Jan 12 22:27:00 UTC 2008] Keita Yamaguchi * Add support for Last-Modified and If-Modified-Since headers in Ramaze::Dispatcher::File. darcs-hash:20080112232725-7958a-326619b649351f6dc14b439a300a4c0d8fab5d45.gz [452b735 | Mon Jan 14 11:29:00 UTC 2008] Keita Yamaguchi * Add a gettext parser module. darcs-hash:20080114122919-7958a-47f501fc9f327e0745ba51cc31562e89a8dad5a0.gz [6da0837 | Mon Jan 14 15:02:00 UTC 2008] Michael Fellinger * Fix runner detection for Windows darcs-hash:20080114160251-cbc08-32be9e21bbacba0f12fb558d75c90fced1d68990.gz [8dd3a5a | Mon Jan 14 15:02:00 UTC 2008] Michael Fellinger * Only set Content-Type for Sass if we are in a response darcs-hash:20080114160233-cbc08-f51121cf401313135f1725b30175ec3bd668e982.gz [1f7f89f | Mon Jan 14 15:02:00 UTC 2008] Michael Fellinger * Remove copyright notices from proto files darcs-hash:20080114160223-cbc08-1d4895bab2b95775ed51036566c7a92a4663968c.gz [a41d76b | Mon Jan 14 15:02:00 UTC 2008] Michael Fellinger * Don't require spec/rake/spectask in Rakefile darcs-hash:20080114160212-cbc08-73a6775855bc08e89dbbf65c2f56ab06127b94d4.gz [24bff93 | Mon Jan 14 13:33:00 UTC 2008] Chris Duncan * Removed include REXML from spec/helper.rb and changed main.rb in proto to use got.at method instead of got.at_xpath. darcs-hash:20080114143323-96e64-a077e9923a497f81dfd0285989fa8b2c680c806f.gz [925e388 | Sun Jan 13 22:29:00 UTC 2008] Jonathan Buch * LinkHelper: make A() and Rs() more like R(), add specs darcs-hash:20080113232901-2c51e-a067d274965fc8705a311867be9fea96b7372eac.gz [0f9430c | Sun Jan 13 21:05:00 UTC 2008] Aman Gupta * Add Builder template engine for generating XML darcs-hash:20080113220510-569a4-b7a585bb5c1b54379df568a0ef455ba31422d9bc.gz [5bbd68d | Sun Jan 13 01:12:00 UTC 2008] Aman Gupta * Avoid requiring ramaze twice when using ramaze binary darcs-hash:20080113021251-569a4-20bc1dde7041f9c4c25f447a8476bbdf07eb0a8b.gz [ec94937 | Fri Jan 11 15:36:00 UTC 2008] skaar * Add support for href prefix for breadcrumbs darcs-hash:20080111163609-0abfd-1dadf6ceeee4d7e55291794ab9a56fd3f94d753d.gz [c948d01 | Fri Jan 11 18:31:00 UTC 2008] jesuswasramazing.10.pistos * Added file upload example. darcs-hash:20080111193153-55b44-10dbc5df819130bf79daeafa3adee91a607d1fa1.gz [0734ffa | Thu Jan 10 20:28:00 UTC 2008] jesuswasramazing.10.pistos * Added EmailHelper. darcs-hash:20080110212806-55b44-3be62277dbdd94d77b587061bf64a0b7044658a6.gz [9e3b84d | Fri Jan 11 07:28:00 UTC 2008] Michael Fellinger * Improve spec for Request#to_ivs a bit darcs-hash:20080111082846-cbc08-601d85416bb9189b5a5bf4900f8fc2234da5f3e4.gz [f710327 | Fri Jan 11 07:27:00 UTC 2008] Michael Fellinger * The last fix for adapter require wasn't very elegant, do it better darcs-hash:20080111082741-cbc08-13b95e9229a0d67758e47335196606d9a1f3678a.gz [e668fbd | Fri Jan 11 07:17:00 UTC 2008] Michael Fellinger * Adding Request#to_ivs darcs-hash:20080111081726-cbc08-12b5ab343139d8e78b1edf1e7c34d77e91392186.gz [4b37f8f | Fri Jan 11 07:14:00 UTC 2008] Michael Fellinger * Improve adapter handling, if we find a const we don't require or complain. darcs-hash:20080111081405-cbc08-8ec735caf523166415e2b12203dac168c34bf5ed.gz [cdd9623 | Fri Jan 11 07:12:00 UTC 2008] Michael Fellinger * Adding adapter for litespeed darcs-hash:20080111081231-cbc08-1aafb018584b3796fba3347149c7f6e284928093.gz [7fd590f | Thu Jan 10 14:16:00 UTC 2008] keita.yamaguchi * Remove empty msgid from pot file when update darcs-hash:20080110151615-a2c1a-0f8216acc77a786d45b9ae962c5cedd48aac6e81.gz [be45503 | Thu Jan 10 20:06:00 UTC 2008] Carlo Zottmann * The type of transaction (read vs. read/write) wasn't pushed down the line to YAML::Store, which causes the YAML storage file to be re-written each and every time it's accessed. darcs-hash:20080110210627-6751c-f25f9db9e51549c37e0b788b85cb95ad4d7698ca.gz [650119e | Thu Jan 10 19:23:00 UTC 2008] Aman Gupta * Use _why's metaid to avoid unnecessary @__locals variable in render_template darcs-hash:20080110202350-569a4-66bc6c2ece1f79db00c8bf06a1fc276fa25284bc.gz [a6ea525 | Thu Jan 10 09:26:00 UTC 2008] Aman Gupta * Add additional version of recursive render_template spec that uses locals darcs-hash:20080110102630-569a4-0823fd6f9559ece61daf8b7fc1853f833c0be7b7.gz [bf609f5 | Thu Jan 10 09:14:00 UTC 2008] Aman Gupta * Add support for locals with render_template darcs-hash:20080110101419-569a4-463ba68b9bf416a07d4bcc6c92dca4d667a0f779.gz [e1e0950 | Thu Jan 10 06:38:00 UTC 2008] Aman Gupta * Add session cookie options to Session::COOKIE so default values can be modified using Ramaze::Session::COOKIE.merge!(:expires => 120.days.from_now) darcs-hash:20080110073810-569a4-27bcb159612afcc6628e7a165976bf9c9d708f74.gz [f73b2a5 | Thu Jan 10 04:50:00 UTC 2008] Aman Gupta * bin/ramaze should use local version of ramaze when run out of a darcs repo darcs-hash:20080110055043-569a4-48365f8e3d0811074fa5349aa3fbee6ef6074633.gz [e21a566 | Thu Jan 10 04:50:00 UTC 2008] Aman Gupta * Ramaze no longer requires rspec darcs-hash:20080110055027-569a4-7e845165081966b68073d363de8e1d396f13f436.gz [44967a3 | Thu Jan 10 04:24:00 UTC 2008] Aman Gupta * Only use default MainController no other controllers are present darcs-hash:20080110052426-569a4-51fcfbc9814ec37c2f936466ffa50d4dab7afa2f.gz [28d800e | Wed Jan 09 23:20:00 UTC 2008] Michael Fellinger * s/Carlo Zottmann/Richard Outten/ darcs-hash:20080110002011-56f1f-b76e291c58cc921c7d31f3f37fcfe8f17cc52e83.gz [2630e2f | Wed Jan 09 17:50:00 UTC 2008] Michael Fellinger * Repo version 0.3.1 darcs-hash:20080109185047-56f1f-199e381123695b4b424f6668cf417523dc059111.gz [2dafe30 | Wed Jan 09 17:48:00 UTC 2008] Michael Fellinger * Version 0.3.0 darcs-hash:20080109184830-56f1f-5e6689970504c60889324d7044f00fdf5d58d983.gz [bbb6f2c | Wed Jan 09 16:06:00 UTC 2008] Michael Fellinger * Update changelog darcs-hash:20080109170622-cbc08-f5188ae609a29f582fc9b57e9758dfefcf782aea.gz [8485b43 | Wed Jan 09 16:04:00 UTC 2008] Michael Fellinger * Cosmetic change in error.xhtml darcs-hash:20080109170402-cbc08-7c13bded2410829d0b9260f825f7e108a938762e.gz [edbd204 | Wed Jan 09 16:03:00 UTC 2008] Michael Fellinger * Change (c) for new year darcs-hash:20080109170311-cbc08-aacccbff7460a776b6f6f4c56e68ffbac24c580a.gz [ffc9821 | Wed Jan 09 16:02:00 UTC 2008] Michael Fellinger * Update announcment darcs-hash:20080109170216-cbc08-a8a525ee046e32871ec7608f513e5fbaaf919d53.gz [3e83684 | Tue Jan 08 13:14:00 UTC 2008] Michael Fellinger * A couple of beautifications for specs of Dispatcher::Directory, Template::XSLT and Contrib::Route darcs-hash:20080108141401-cbc08-00869199c346931e5593e25023c8e693803b59e4.gz [27ea8c6 | Tue Jan 08 13:13:00 UTC 2008] Michael Fellinger * Adding a bunch of comfy methods to work directly with REXML on mock responses in specs. darcs-hash:20080108141319-cbc08-ed66aee07b9745432b6ef1c0c64b95fc94255300.gz [53caa9c | Tue Jan 08 13:13:00 UTC 2008] Michael Fellinger * Don't start sourcereload for specs darcs-hash:20080108141307-cbc08-2267ecea832d78f13ce62fe7e12309d725dff993.gz [7781693 | Tue Jan 08 13:12:00 UTC 2008] Michael Fellinger * Change testcase_requires to spec_require, shorter and reads better. darcs-hash:20080108141208-cbc08-f76bdf45e9bc5e01a9c0ec927f20f2033954da7a.gz [9381626 | Mon Jan 07 23:50:00 UTC 2008] Aman Gupta * Add diff to top of syntax list in rapaste darcs-hash:20080108005059-569a4-29fe500357bb04c3939952ab237260c1e45aac19.gz [47eff61 | Mon Jan 07 23:50:00 UTC 2008] Aman Gupta * Don't look for templates in public/ darcs-hash:20080108005044-569a4-8da94b13f0a4d23f199160c651c1933a089a7817.gz [67d63dd | Tue Jan 08 07:10:00 UTC 2008] Michael Fellinger * Adding thin to 'obvious' options in global.rb darcs-hash:20080108081053-cbc08-683175cbee3769cc30611b6eb932c824d8511d18.gz [54ab63d | Mon Jan 07 07:57:00 UTC 2008] Aman Gupta * Move public/error.zmr to template/error.xhtml, cleanup js, use page.xhtml layout darcs-hash:20080107085741-569a4-56af642ba79d97662633d5015e2ae4ea1304c946.gz [b84e2c4 | Mon Jan 07 07:33:00 UTC 2008] Aman Gupta * Update proto start and spec: use __DIR__ so specs and start can be run from any dir, include :adapter and :port options to Ramaze.start for easy changing darcs-hash:20080107083302-569a4-07df79dc2c98866b3881e82d6b7ab0ab9e847bdf.gz [27a5b7a | Mon Jan 07 07:32:00 UTC 2008] Aman Gupta * Update proto views: add links to ramaze site and docs, remove old references, tweak css darcs-hash:20080107083202-569a4-c00607500be525b36a231e318bc5027388688c26.gz [3fb1b2c | Mon Jan 07 07:30:00 UTC 2008] Aman Gupta * Update error pages: remove color gradient, add textmate link, optimize javascript, tweak css darcs-hash:20080107083031-569a4-7655d3248c041b1b1b135a4f91e32b6576e5e30c.gz [0341cb5 | Mon Jan 07 07:21:00 UTC 2008] Aman Gupta * After creating a new ramaze app, show command to run the app darcs-hash:20080107082129-569a4-6c57adf228eb59c55efade66144e367fd69ea3fb.gz [9774607 | Mon Jan 07 07:20:00 UTC 2008] Aman Gupta * Make "describe ClassName do end" work with bacon darcs-hash:20080107082048-569a4-29ec09db8d9dff85cf806bd5d16d012d57ef096f.gz [809883f | Mon Jan 07 06:07:00 UTC 2008] Aman Gupta * [rapaste] remove unused helper/ subdir, use respond() instead of throw :respond darcs-hash:20080107070705-569a4-56d1a3c80723c567f7b129dd93ecb19fa6b979dc.gz [036582f | Mon Jan 07 06:13:00 UTC 2008] Michael Fellinger * Adding fallback aquire.rb darcs-hash:20080107071314-cbc08-6ef844d06ee514da7538471ad4218ed71b82f145.gz [f0748d0 | Mon Jan 07 05:59:00 UTC 2008] Michael Fellinger * jQuery 1.1.3.1 => 1.2.2b2 darcs-hash:20080107065958-cbc08-f57e3d423fb48bbfe498418a3f0b63866a3d88a8.gz [ad22e70 | Mon Jan 07 05:56:00 UTC 2008] Michael Fellinger * Update /lib/proto to new structure. darcs-hash:20080107065602-cbc08-f6e387c33a13c38ebe4c0baa5a38225e0a43d94f.gz [7bf4e24 | Mon Jan 07 05:52:00 UTC 2008] Michael Fellinger * s/aquire/acquire/g darcs-hash:20080107065259-cbc08-da09515f7090ac053b431924d048b9bb734fa4d6.gz [c1cca01 | Mon Jan 07 05:48:00 UTC 2008] Michael Fellinger * Adding jquery task to d/l latest jquery and put it in /lib/proto/public/js/jquery.js darcs-hash:20080107064809-cbc08-07194e99fa11d985fb3f24b199dda93b58956085.gz [9c27795 | Mon Jan 07 05:35:00 UTC 2008] Michael Fellinger * Adding shared xpath for bacon, that should help us getting rid of Hpricot in specs. darcs-hash:20080107063516-cbc08-becb904b0ccae54da52bffccd1654bfabcd7fd2d.gz [4cc2a45 | Mon Jan 07 03:31:00 UTC 2008] Aman Gupta * Use view/ subdirectory for templates if available, else fallback to template/ darcs-hash:20080107043109-569a4-40234eb3d9204abc904f9a7e398c682f82b5a4f1.gz [29690f3 | Mon Jan 07 03:25:00 UTC 2008] Aman Gupta * Display current public and template root during startup darcs-hash:20080107042525-569a4-fb9dd4a5b22894f04662efcb6d0e84d0b0746001.gz [bc7a823 | Mon Jan 07 02:24:00 UTC 2008] outtenr * * fixed require statement in linking.rb example darcs-hash:20080107032408-5aeb6-4e38897a65a3643f07c81d475c3ad0411740327d.gz [451bc65 | Mon Jan 07 02:29:00 UTC 2008] Aman Gupta * Avoid requiring bacon twice when running snippet specs darcs-hash:20080107032911-569a4-8c9a4f3c083b55cdd24a51f5f8daf617abc4a5da.gz [a0c2a27 | Mon Jan 07 02:26:00 UTC 2008] Aman Gupta * Alias acquire to aquire darcs-hash:20080107032649-569a4-a1b546f16f151af79c24600db1ce565776353160.gz [51eb55f | Sun Jan 06 17:55:00 UTC 2008] Michael Fellinger * Make Dictionary#find return nil if nothing is found. darcs-hash:20080106185511-cbc08-8d29034217458c85d79f9e07af1c8b31e6478a9d.gz [99b116c | Sun Jan 06 15:38:00 UTC 2008] Michael Fellinger * Extend Dictionary with a nice #find method. darcs-hash:20080106163837-cbc08-62d738f8f712d7c9a1ad9cd51067ec377d62f404.gz [a5aeac5 | Sun Jan 06 08:45:00 UTC 2008] Michael Fellinger * Add possibility to put index file into public directories and subdirectories. darcs-hash:20080106094528-cbc08-6948bd05dec5e84bee32ffd5389b4a124e7e5cff.gz [b257f3a | Sun Jan 06 08:33:00 UTC 2008] Michael Fellinger * Fixing directory dispatcher in case of relative public root darcs-hash:20080106093303-cbc08-f97bce1d44afa3760a3e6a3ee5fe17df6247a78b.gz [5f85b06 | Sun Jan 06 08:31:00 UTC 2008] Michael Fellinger * Adding default MainController darcs-hash:20080106093154-cbc08-2a97623e2e4efca037ee8e6e7af5c0d78c3560d8.gz [4f87eea | Sun Jan 06 07:41:00 UTC 2008] Michael Fellinger * Don't ignore missing author names in the author related tasks. darcs-hash:20080106084110-cbc08-5078f72229ec96dc873712e148ab3d153afba587.gz [18d31f2 | Sun Jan 06 07:37:00 UTC 2008] Michael Fellinger * Make rammit pass darcs-hash:20080106083754-cbc08-97b7bd1e677757f18c60c4d14412c8a5ee864c8c.gz [f8c05a3 | Sun Jan 06 02:02:00 UTC 2008] Aman Gupta * Add request/thin spec darcs-hash:20080106030224-569a4-9243da73936b041123ffae96a3af80d43a0188ca.gz [cd02fba | Sat Jan 05 23:30:00 UTC 2008] Jonathan Buch * [benchmark] add benchmarking for templates (ezamar, haml for now) darcs-hash:20080106003058-2c51e-96a57cfd7e9df6e776455a01f068bd318aed7f3f.gz [93aa432 | Sat Jan 05 21:48:00 UTC 2008] Jonathan Buch * [rakefile] fix rake patchstat, empty name from darcs breaks script darcs-hash:20080105224843-2c51e-1ae234f5e8a1b78c1ed149850935b30b39d8c15e.gz [b406e79 | Sat Jan 05 08:26:00 UTC 2008] Aman Gupta * Add adapter for Thin ruby webserver darcs-hash:20080105092624-569a4-20d21dabb7988d359657f58bf072273c5e7da915.gz [35bb813 | Sat Jan 05 00:14:00 UTC 2008] Jonathan Buch * [rammit] make specs runnable from `rake test` darcs-hash:20080105011414-2c51e-f07ef982e44814fefc7a9d2600455e8b0113db2d.gz [b963589 | Sat Jan 05 00:07:00 UTC 2008] Jonathan Buch * Make 'should create page from intro page' pass darcs-hash:20080105010725-2c51e-3d5646348736c86013d69a930ee7331357b390fb.gz [9fd91b6 | Fri Jan 04 20:11:00 UTC 2008] Michael Fellinger * Make the sourceview example work on _darcs/current and invalidate cache in any case on a reload darcs-hash:20080104211156-56f1f-0c790510b02ec437eec279343404e14333085363.gz [2db591a | Fri Jan 04 19:58:00 UTC 2008] Michael Fellinger * Adding examples/rammit (first draft) darcs-hash:20080104205837-cbc08-42b7bb69a32f86401e1207906194e8a254f6aa95.gz [fde9cc1 | Fri Jan 04 19:57:00 UTC 2008] Michael Fellinger * Make the load path for bacon more general and uniq it in ramaze.rb darcs-hash:20080104205716-cbc08-757e8a5ccba1655d7adec93ffd6541549a763d29.gz [d39e1be | Thu Jan 03 16:16:00 UTC 2008] Michael Fellinger * Add (statisticans please close your eyes) more info for benchmarking darcs-hash:20080103171621-cbc08-d04be166c52883ca20f5e43020df73b959cdd631.gz [5e20bbe | Thu Jan 03 12:38:00 UTC 2008] outtenr * fix_for_controllers_with_new_method If a controller had a method of "new", the "R" linking method would brake. Modified code and tests should be included. darcs-hash:20080103133851-5aeb6-63820f005a0372dd3accdaac613e770690fbefd2.gz [ce0ca62 | Wed Jan 02 11:58:00 UTC 2008] Michael Fellinger * Add tiny spec for raw_redirect darcs-hash:20080102125820-cbc08-ca50b1de710a903c2bd0d1071705830dea219267.gz [fd1074c | Wed Jan 02 11:57:00 UTC 2008] Michael Fellinger * Adding sqlite3 to dependencies of sequel/fill spec darcs-hash:20080102125755-cbc08-f3021b138bb913f892b6ae49197a0ef86aba33d3.gz [d5513fb | Wed Jan 02 11:02:00 UTC 2008] Michael Fellinger * Adding RedirectHelper#raw_redirect to prevent messing with the target darcs-hash:20080102120221-cbc08-dfc545c706f7a355b53099c6c71c42d2385d0afc.gz [f9e97a2 | Wed Jan 02 03:00:00 UTC 2008] Aman Gupta * Fix encoding issues with mongrel/webrick request specs on 1.9 darcs-hash:20080102040051-569a4-88d85b8db07f14940c443079455da82b7a0d8bd4.gz [68179af | Wed Jan 02 02:28:00 UTC 2008] Michael Fellinger * Fix the dispatcher/file spec for 1.9.0 darcs-hash:20080102032857-cbc08-a0ba1e7abbe3e303f2fd786c23b38721c59e1611.gz [6d76611 | Wed Jan 02 01:44:00 UTC 2008] Aman Gupta * Don't run contents of favicon.ico through ezamar in mongrel/webrick request spec darcs-hash:20080102024437-569a4-749a570811d117019ca31146e0dae17a06ed5260.gz [8fa3fed | Wed Jan 02 01:39:00 UTC 2008] Aman Gupta * Simplify error dispatching code, and prevent infinite recursion on 1.9 darcs-hash:20080102023924-569a4-ce11c3af7e597899694324dd953a5c242e274a4d.gz [27888d3 | Wed Jan 02 00:25:00 UTC 2008] Michael Fellinger * add non_fatal and non_verbose ENV options for running specs and fix a minor bug darcs-hash:20080102012550-cbc08-e7d751c9c3fe6ae1ed68a1f0905546c88cfb0b93.gz [226ac62 | Wed Jan 02 00:06:00 UTC 2008] Michael Fellinger * Don't use Nagoro for the whywiki example darcs-hash:20080102010601-cbc08-a509a7a823bf8eaca9115775efa4b7045b44cd5b.gz [62820e0 | Tue Jan 01 22:51:00 UTC 2008] Michael Fellinger * Add -I for libpath to spec task darcs-hash:20080101235138-cbc08-02777dc20d7c9b5e33b0e088d2d205faadad08f4.gz [62325b2 | Tue Jan 01 22:50:00 UTC 2008] Aman Gupta * Update benchmark/test.rb: use httperf, turn off sourcereload, read adapter from ARGV[0] darcs-hash:20080101235039-569a4-ca168c8ff9af1fb82151718aa32b804c65a819c7.gz [36e461d | Tue Jan 01 22:15:00 UTC 2008] Michael Fellinger * Finally switch to bacon totally, enjoy :D darcs-hash:20080101231532-cbc08-53577c5fdb2b6c4965feb17b8fc4d81bac0db6ad.gz [011894e | Tue Jan 01 20:59:00 UTC 2008] Aman Gupta * Block arguments in 1.9 cannot be instance variables darcs-hash:20080101215912-569a4-2325b2cf45c06d1cda05b0b919d87d3b5a56e935.gz [a0893dd | Tue Jan 01 20:52:00 UTC 2008] Aman Gupta * Improve ruby1.9 version of BlankSlate and make OrderedSet specs pass darcs-hash:20080101215226-569a4-6e1cb8c39badf82bac8ccfaab5cfa9853b1643d3.gz [58aba70 | Tue Jan 01 20:20:00 UTC 2008] Michael Fellinger * Do not use ThreadGroup for collecting adapter threads, use Set instead, a lot more reliable over 1.8=>1.9 darcs-hash:20080101212042-cbc08-4f38d0bd7277e9153f2faee3760b3fd8350fcafa.gz [dd63f31 | Tue Jan 01 08:30:00 UTC 2008] Aman Gupta * Speed up trinity/session spec, show # of passing tests instead of assertions darcs-hash:20080101093011-569a4-7f47761e4d0c9a6e15ef15519bb8f2fff6859e65.gz [b180f8a | Mon Dec 31 20:01:00 UTC 2007] Jonathan Buch * patch rake test, shows passed/failed specs again, don't test bacon/snippets.rb darcs-hash:20071231210107-2c51e-a95f5adc75c9f95590d6253b383617ec577fcbc9.gz [bc4dd1d | Mon Dec 31 19:34:00 UTC 2007] Jonathan Buch * revise pager spec darcs-hash:20071231203420-2c51e-8bf1f6f178e92e9f7a7ac6d0de849b38ac38deac.gz [f496301 | Mon Dec 31 19:33:00 UTC 2007] Jonathan Buch * remove unneccessary whitespace from contrib/gettext darcs-hash:20071231203344-2c51e-e5df3de0bd7c3dfd60039a4dd22efe8e1e81c301.gz [7a2dc24 | Mon Dec 31 17:40:00 UTC 2007] Michael Fellinger * Update Bacon to latest version darcs-hash:20071231184035-cbc08-ce8ea8f8a46a38b7a7bb9bfa4efb17a9d7c2a051.gz [f6812dc | Mon Dec 31 17:40:00 UTC 2007] Michael Fellinger * Big switch to using bacon instead of rspec, gotta update the rake task for darcs, run specs using 'ruby specwrapper.rb' for now darcs-hash:20071231184027-cbc08-21bd2db7a3f2b6779894957132c8b84c67a15c2b.gz [f069407 | Mon Dec 31 15:58:00 UTC 2007] Michael Fellinger * Small beautification for lib/ramaze.rb darcs-hash:20071231165807-cbc08-5722d8427b0371b92ad860ad92f63a65a76f641a.gz [4d55bd4 | Mon Dec 31 09:55:00 UTC 2007] Michael Fellinger * Make Gestalt compatible with 1.9.0 darcs-hash:20071231105541-cbc08-e75f79579ddeeaee0ed199f990215811e0d36127.gz [5fd92ee | Mon Dec 31 09:27:00 UTC 2007] Michael Fellinger * Small beautification for source of snippets/string/color darcs-hash:20071231102716-cbc08-68ce2bd113ff1bda97023d34d469689435699f29.gz [50cf2ae | Mon Dec 31 09:26:00 UTC 2007] Michael Fellinger * Don't require rubyforgepublisher in Rakefile, we don't use it anyway darcs-hash:20071231102645-cbc08-c57a0ea2f0d7955459a7f04b475c0a14ac5b6bdd.gz [31f051d | Mon Dec 31 09:26:00 UTC 2007] Michael Fellinger * More compatiblity with Ruby 1.9.0 - at least the hello example now runs on 1.9.0! darcs-hash:20071231102615-cbc08-e2074d3e0bbc7a62f2af2f92a4726d268bcfa6c0.gz [7c71dcf | Mon Dec 31 08:53:00 UTC 2007] Michael Fellinger * Make OrderedSet compatible with 1.9 darcs-hash:20071231095319-cbc08-c005ebe1b072510926cdaf5fd57166546555c9c7.gz [5081891 | Mon Dec 31 01:06:00 UTC 2007] Aman Gupta * Fix auto_params with latest ruby2ruby (nil.method_missing was removed) darcs-hash:20071231020626-569a4-8c72fb52abe8e9339e7930e99dcacf63b3fd8dfe.gz [2a7a9ca | Mon Dec 31 01:05:00 UTC 2007] Aman Gupta * Make instance vars available when layout action is in another controller + better layout specs darcs-hash:20071231020543-569a4-3ba97e4cf36ce5d83f8fa49138572a24469cf647.gz [b12adef | Sun Dec 30 05:31:00 UTC 2007] Aman Gupta * Add spec for re-using layouts from other controllers darcs-hash:20071230063132-569a4-dd029640d80e49aa9ea1248dfab01ed608455498.gz [f4ac10e | Sun Dec 30 07:30:00 UTC 2007] Michael Fellinger * Fix layout so it calls a method on the right controller. darcs-hash:20071230083030-cbc08-7f7c1cfe35d58791b906678fd97b2e4780d33b70.gz [fb63685 | Fri Dec 28 23:44:00 UTC 2007] Aman Gupta * Add memory usage to benchmarks darcs-hash:20071229004408-569a4-2f07cb4676ee77aadb1dd9742246ab3fd447ba16.gz [174dc60 | Fri Nov 30 17:35:00 UTC 2007] Jonathan Buch * Add gettext contrib, localize ramaze via gettext darcs-hash:20071130183535-2c51e-5826f1393913c99fff62d5e21a08f6fbd49fd3e0.gz [e6e8de3 | Thu Dec 27 23:11:00 UTC 2007] Jonathan Buch * [pager] add compatibility to Og > 0.41 darcs-hash:20071228001113-2c51e-389ea9b73fa04d5ae4d00cdfbd4c3a275654955f.gz [989780f | Thu Dec 27 22:57:00 UTC 2007] Jonathan Buch * [rapaste] fix pagination bug on /view darcs-hash:20071227235759-2c51e-e55f6c7c8e91e204c2c38b50b2f57805942144e5.gz [6a612b7 | Thu Dec 27 08:50:00 UTC 2007] Michael Fellinger * Adding blankslate and String#ord, first one for OrderedSet to inherit from, and in case of 1.9 to make BlankSlate equivalent to BasicObject darcs-hash:20071227095005-cbc08-71314b5883676559c739607ee79e38b75f9aa6e7.gz [e96dcd7 | Thu Dec 27 07:31:00 UTC 2007] Michael Fellinger * Only undef Symbol#to_int if it has been defined darcs-hash:20071227083159-cbc08-dbbe767e59d0d4bdc6924b499204e6f2786be68a.gz [f81ae3d | Wed Dec 26 06:21:00 UTC 2007] Aman Gupta * Minor beautification of spec speedup patch darcs-hash:20071226072144-569a4-5e6c4bfdc91ba24d258b05698bd0aedc8a8935e0.gz [eaa1084 | Wed Dec 26 06:20:00 UTC 2007] Aman Gupta * Escape regexps so specs run in directories with strange characters darcs-hash:20071226072032-569a4-307adb6bd990f9acd07246d6815efcf129da7cf0.gz [ed47d33 | Wed Dec 26 03:55:00 UTC 2007] Michael Fellinger * Speed up snippet specs, shaves off 10 secs of spectime. darcs-hash:20071226045551-cbc08-a9eac057770a9f6c3ea26d5db5963548296886e6.gz [ffdd344 | Tue Dec 25 04:20:00 UTC 2007] Aman Gupta * Update amrita2 template engine darcs-hash:20071225052004-569a4-008825f383e93368977a139b72d1312700ae1fe9.gz [7836dbd | Tue Dec 25 04:19:00 UTC 2007] Aman Gupta * Add specs for Symbol#to_proc snippet darcs-hash:20071225051953-569a4-6b7162ab05b68a7433982ef49cb86b8cf0ea0862.gz [8c43a67 | Tue Dec 25 03:12:00 UTC 2007] Michael Fellinger * little beautification darcs-hash:20071225041219-cbc08-19029d1e488743e316ffa08b1392171a3cdd6d90.gz [afaa637 | Tue Dec 25 03:11:00 UTC 2007] Michael Fellinger * Adapt nagoro engine to latest nagoro version darcs-hash:20071225041143-cbc08-60ccbd7f8148ac09b7b937588a6a38c4fab80e02.gz [20beb7e | Tue Dec 25 03:10:00 UTC 2007] Michael Fellinger * Fix engine lookup if conflict of extension arises, make result predictable darcs-hash:20071225041053-cbc08-6b28488899c9eb4bfa48cf1c20cf89a24a1585e2.gz [929e8a3 | Tue Dec 25 03:10:00 UTC 2007] Michael Fellinger * Unify the specs in example applications darcs-hash:20071225041003-cbc08-5aadbe311e6f79be1ca98b5999b569f8f2becd4a.gz [0237100 | Tue Dec 25 03:09:00 UTC 2007] Michael Fellinger * Move the SequelHelper into our general helpers, provides easy pagination darcs-hash:20071225040925-cbc08-16e1e14479d56f34040c00ec16ff4ab7b437e531.gz [c7fffbe | Tue Dec 25 02:56:00 UTC 2007] Michael Fellinger * Make examples/wikore compatible with rspec 1.1.1 which has the silly behaviour of assuming methods starting with 'should_' are specs too... darcs-hash:20071225035602-cbc08-7190eada7abb61d332e972d80b48b38bffc62a11.gz [08bd303 | Tue Dec 25 02:48:00 UTC 2007] Michael Fellinger * Switch examples/blog from Og to Sequel darcs-hash:20071225034808-cbc08-1a78dabc9f9d8086c2e5e57ae67bd092c0861d02.gz [009d7c4 | Sat Dec 22 11:48:00 UTC 2007] Michael Fellinger * Small fix for whywiki spec darcs-hash:20071222124825-cbc08-2575dadc38481293df322f0c187e94b31bcaf4fc.gz [d119e0a | Tue Dec 25 02:10:00 UTC 2007] Michael Fellinger * Make our Symbol#to_proc equivalent to the activesupport one :P darcs-hash:20071225031000-cbc08-c48b4bcbb1110cd4eccd5f28a509e29035326067.gz [660548c | Tue Dec 25 02:06:00 UTC 2007] Michael Fellinger * Don't rely on Symbol#to_proc in our source darcs-hash:20071225030644-cbc08-4e3959adb34a6d0b91c5cc1af9dbcab8f6988dbf.gz [3a3f66f | Fri Dec 21 08:47:00 UTC 2007] Michael Fellinger * Rakefile should require time darcs-hash:20071221094704-cbc08-7c23b196e8b76f230926f028294aa6cdba9e7031.gz [7313d36 | Wed Dec 19 15:25:00 UTC 2007] jesuswasramazing.10.pistos * / is now the "add new" action, /list is now the listing. darcs-hash:20071219162549-55b44-23c8bc16c4d47e3c8efe1ec2fb9f09def65187f2.gz [a004669 | Wed Dec 19 12:27:00 UTC 2007] Michael Fellinger * Fix the check for syntax in rapaste darcs-hash:20071219132723-56f1f-c5c52ea4985c4272212fb8a7a8d869e8d6ef5d6c.gz [f6d3e39 | Wed Dec 19 03:29:00 UTC 2007] Michael Fellinger * Add guard against wrong syntax in rapaste for saving pastes darcs-hash:20071219042954-56f1f-8fc4a07cba45da445c6cab27e1454fd3cd3f9143.gz [a1fe781 | Tue Dec 18 16:23:00 UTC 2007] Michael Fellinger * examples/rapaste: Select right style for text_fragment darcs-hash:20071218172300-cbc08-bfd5674cff0cb629159836ec04cc9453dc0d2405.gz [7b47dd7 | Mon Dec 17 18:55:00 UTC 2007] jesuswasramazing.10.pistos * Save theme selection in session. darcs-hash:20071217195522-55b44-100c283d09d8df23897f0a11e055c740034f7c4c.gz [d9f31e1 | Mon Dec 17 02:56:00 UTC 2007] Michael Fellinger * Add examples/rapaste darcs-hash:20071217035651-cbc08-a6a560048233a2df50a442889ef96845cdb4166e.gz [be69a3a | Mon Dec 17 00:17:00 UTC 2007] Michael Fellinger * Improved Tool::Localize darcs-hash:20071217011744-cbc08-adda8017b8833d2ed30bb367cc6233999dbf2cb8.gz [5c33bda | Sun Dec 09 01:29:00 UTC 2007] Aman Gupta * Prevent ramaze --create from overwriting existing files/directories darcs-hash:20071209022933-569a4-d760ae19ce1e5f53b121607302e32cdf318f9f25.gz [1f3dd2e | Fri Dec 07 19:14:00 UTC 2007] Aman Gupta * SourceReload bugfix- use Regexp.union so Dir.pwd is escaped darcs-hash:20071207201450-569a4-3473606bd93ae0a0fd07b7b569954df4af4ff6be.gz [1ee4038 | Fri Dec 07 19:00:00 UTC 2007] Aman Gupta * Add lambda router support to contrib/route darcs-hash:20071207200026-569a4-0f7cc7905d9916cf90c0242d755a640f898526bf.gz [3ca4143 | Fri Dec 07 02:58:00 UTC 2007] Aman Gupta * Updated benchmark suite and results darcs-hash:20071207035838-569a4-e97c51f2e86d2b93d8f45f1534de097081652f94.gz [cce1c50 | Fri Dec 07 01:40:00 UTC 2007] Aman Gupta * Optimize OrderedSet implementation darcs-hash:20071207024011-569a4-f9369bd7c999cbc91b31df2785a366d5eef99b20.gz [9bc2598 | Thu Dec 06 01:54:00 UTC 2007] Aman Gupta * Improve facebook API error handling (I'll move this to a gem or external lib eventually..) darcs-hash:20071206025446-569a4-0850cee7b7099596347ad8484e15f6c2e35c469e.gz [f10de79 | Thu Dec 06 05:29:00 UTC 2007] Michael Fellinger * Introducing caching for Controller::action_methods in Cache.action_methods. darcs-hash:20071206062901-cbc08-684b4c7a4ec9efc52a0e733005ac6954da9185ae.gz [b700090 | Thu Dec 06 04:54:00 UTC 2007] Michael Fellinger * Fix oddities in bin/ramaze when used via gems (hopefully? :) darcs-hash:20071206055432-cbc08-e66ded5ed2950ac8319a04e7e2fdc77e00d74e23.gz [f48cd23 | Sun Dec 02 20:50:00 UTC 2007] Aman Gupta * String#unindent is part of latest release, remove from ramaise.rb darcs-hash:20071202215017-569a4-c3e77bb8c8dccafe35aaf2763e7f3c06c06e2929.gz [491f43e | Sat Dec 01 23:07:00 UTC 2007] Aman Gupta * examples/css spec requires Haml darcs-hash:20071202000754-569a4-e98be1b3594c81e847a548eca2865b7303018a59.gz [e182a78 | Sat Dec 01 18:39:00 UTC 2007] Aman Gupta * Add contrib/facebook and simple facebook app example darcs-hash:20071201193928-569a4-f1e8bbf05f9e0ac20fcaf4426ca88cfffc3360d9.gz [75d0e98 | Sat Dec 01 18:33:00 UTC 2007] Aman Gupta * Add another spec for String#snake_case darcs-hash:20071201193347-569a4-b022ace1c7c65c971123cb67a31f15157d8839b2.gz [b2c0b7b | Sat Dec 01 18:33:00 UTC 2007] Aman Gupta * Fix timeout error with :adapter => :fcgi darcs-hash:20071201193326-569a4-05e5d0764e996214c386a9fcbd8600e36220b373.gz [bd6072d | Fri Nov 30 06:12:00 UTC 2007] Michael Fellinger * Add SessionFlash#delete darcs-hash:20071130071215-cbc08-0a9587c8c862a71037b32fe93ac56a843dc010d3.gz [5b5436a | Fri Nov 30 06:09:00 UTC 2007] Michael Fellinger * Failsafe for Request#local_net? - 'unkown' seems to be a common address... darcs-hash:20071130070925-cbc08-7b71f330c8bc5191238aafe38a86539f64855dfc.gz [0f24879 | Fri Nov 30 02:59:00 UTC 2007] Michael Fellinger * Add lookup for index template like /foo__index darcs-hash:20071130035900-cbc08-984e0d03a7f30fcda2253e67e35eabbf5dc82cda.gz [3d1a4a5 | Wed Nov 28 22:39:00 UTC 2007] Michael Fellinger * Version 0.2.1 darcs-hash:20071128233945-cbc08-3e6fe1b2b02ba8273f62d5308b16d3cbf2eb486a.gz [a438c8b | Wed Nov 28 22:27:00 UTC 2007] Aman Gupta * Use new Request#[] and avoid binding block unnecessarily darcs-hash:20071128232740-569a4-4e428e798e5a8b1b4abe6cb031a34f84376ff0f5.gz [479a99e | Wed Nov 28 22:39:00 UTC 2007] Michael Fellinger * Update CHANGELOG darcs-hash:20071128233912-cbc08-ad5eeac44418a107a3ba4d90342c8d61e69cb8dd.gz [044f5d3 | Wed Nov 28 22:23:00 UTC 2007] Michael Fellinger * Spec and fix for bug in String#unindent darcs-hash:20071128232359-cbc08-1b8ec70dcd92e1e207a7cd189aeb22ae1f14e2bc.gz [588ee79 | Wed Nov 28 07:32:00 UTC 2007] Michael Fellinger * Allow multiple keys for Request#[] darcs-hash:20071128083242-cbc08-e4d0b68cf9bacca6fc88147e60e55f6bf91cc52b.gz [89430e8 | Wed Nov 28 04:46:00 UTC 2007] Michael Fellinger * Add spec for and fix implementation of Request#local_net? darcs-hash:20071128054639-cbc08-015c095250ad396de47d227523cb5f51ae4b59b9.gz [dca3f50 | Wed Nov 28 02:53:00 UTC 2007] Aman Gupta * Allow helper modules to be defined in contrib/ or same file as the app darcs-hash:20071128035336-569a4-fa859cc9b6360ffbdc1374563cb101f5384a0a87.gz [ce32bf8 | Tue Nov 27 05:12:00 UTC 2007] Aman Gupta * Update to latest Sequel conventions (require 'sequel/sqlite' is deprecated) darcs-hash:20071127061202-569a4-02f2780ea90fe0f7c0e7d29ea08ecf90c1dc98f7.gz [974a576 | Tue Nov 27 05:12:00 UTC 2007] Aman Gupta * Doc fixes for contrib/ darcs-hash:20071127061212-569a4-5da7d17125379d206d0adf12ff329a100ba5841a.gz [f9d0719 | Mon Nov 26 22:14:00 UTC 2007] Aman Gupta * require 'ramaze/contrib' then Ramaze.contrib :foo is redundant, load 'ramaze/contrib' by default darcs-hash:20071126231425-569a4-e2bc4597be22883f2bf2d725bb8bc3d2bf378454.gz [08d7b79 | Mon Nov 26 22:12:00 UTC 2007] Aman Gupta * Make StdErr output in specs readable darcs-hash:20071126231232-569a4-abcd8ee1a53ce68d5a2e73b46988a1e5802f9af5.gz [cccb0f7 | Mon Nov 26 00:39:00 UTC 2007] Michael Fellinger * Fix code in comment for gestalt.rb darcs-hash:20071126013935-cbc08-51e685e9a9a1aee6b3295d16f323b2c89d87eca7.gz [59b37ca | Mon Nov 26 00:37:00 UTC 2007] Aman Gupta * Fix rcov coverage report generation task darcs-hash:20071126013705-569a4-24ef1a4fa77137e7426ee66f796b58e4901c5ba4.gz [86a4503 | Tue Sep 25 11:39:00 UTC 2007] rff.rff * support custom caption in openid_login_form darcs-hash:20070925133915-16231-44afb597ca71e26f613f0bd8743e890d4723fa25.gz [9cd3fe3 | Tue Sep 18 10:00:00 UTC 2007] rff.rff * add testcase_require in wikore/spec darcs-hash:20070918120027-16231-44283e5593eeee5a9ac85eb250d764b7060da5ff.gz [32b5d7e | Tue Sep 04 09:33:00 UTC 2007] rff.rff * coverage task, first try darcs-hash:20070904113308-16231-1cde0909c5e8990b9bd94d3035f3e0f08524c862.gz [cbde2f1 | Sun Nov 25 15:14:00 UTC 2007] Aman Gupta * Fix for nginx caching issue with sourceview's javascript darcs-hash:20071125161429-569a4-4d6f4bdce232ef3294f95dbf10cb01d612f5825a.gz [4aad404 | Sun Nov 25 14:57:00 UTC 2007] Aman Gupta * Improve sourceview: add analytics tracking, /path/to/file.rb now works, changing location hash in browser address bar works, visiting /source/file.rb directly works darcs-hash:20071125155740-569a4-5c03b00b5c15336b425d6b0aa501de03c1a1dbf7.gz [c4c6572 | Sun Nov 25 14:16:00 UTC 2007] Michael Fellinger * Fix doc/meta/users.kml for kml version 2.2 darcs-hash:20071125151618-cbc08-15c49eecd690fa8703ebdac8c7ef7b90af8cf31c.gz [15a0bce | Sat Nov 24 23:19:00 UTC 2007] Aman Gupta * Cleanup proto: remove 'include Ramaze', require rubygems so ruby start.rb works, include :port option for easy changing darcs-hash:20071125001957-569a4-94429272ba2b88d9f1270ee213df1d7c0d3cd5fe.gz [82132aa | Sat Nov 24 23:14:00 UTC 2007] Aman Gupta * Add support for define_method actions with / instead of __ darcs-hash:20071125001407-569a4-fa154fc9fd4f06ae4ae53d421d6dd75e79b55a84.gz [994705c | Sat Nov 24 23:10:00 UTC 2007] Aman Gupta * Set Ramaze.start options when using ramaze binary darcs-hash:20071125001027-569a4-7bb7fade6ca713a54612aa9d84fb3bbf7a824995.gz [3794e3f | Sat Nov 24 22:45:00 UTC 2007] Aman Gupta * Add Symbol#/ to divide snippet darcs-hash:20071124234554-569a4-56df04ba9520567002f52bff3ad66aa6048ba1c0.gz [92d0a44 | Thu Nov 22 16:13:00 UTC 2007] Aman Gupta * Fix breakage when trinity/response.rb is source reloaded darcs-hash:20071122171300-569a4-afd5f98bccedc2aed7fc4d1efc8d2b2f34d205f5.gz [40fc0c5 | Thu Nov 22 08:36:00 UTC 2007] Michael Fellinger * Use the almighty IPAddr to check for local IPs, _so_ _much_ _nicer_ and supports both IPv4 and IPv6 :D (is it obvious that i'm 10 minutes before a long weekend?) darcs-hash:20071122093614-cbc08-4db593df2055ca5f292cf052b5bc24279e1beb3d.gz [e2078bd | Thu Nov 22 08:11:00 UTC 2007] Aman Gupta * Calculate avg patches per day in patchsize rake task darcs-hash:20071122091157-569a4-c2f247b7bf7bb76f61bd900f606bedd9235034b4.gz [288c45e | Thu Nov 22 07:19:00 UTC 2007] Aman Gupta * Add String#unindent snippet and use it in Ramaise darcs-hash:20071122081946-569a4-c101d8919a2198778e370cf3368a0d12795fa6b8.gz [08240c2 | Thu Nov 22 06:44:00 UTC 2007] Michael Fellinger * This fixes some problems related to Request, better information on entering Action, fallback for Request#request_uri and fix Request#local_net? (damn you irb) darcs-hash:20071122074456-cbc08-b67af528c0cc0d71137c23f4d787f47d039ac8b9.gz [3d371a9 | Thu Nov 22 06:42:00 UTC 2007] Michael Fellinger * Do go the usual Dispatcher::Action path when we encounter an error so Action::FILTER are applied. darcs-hash:20071122074255-cbc08-c8dd40597ca1ae9cdec179fe3a0cd8877bf481d1.gz [8612df5 | Thu Nov 22 01:57:00 UTC 2007] Michael Fellinger * Adding Request#ip and Request#local_net? darcs-hash:20071122025741-cbc08-06f8309869ed7f5f0b25dc2170cf434657000798.gz [f71d9ad | Wed Nov 21 23:57:00 UTC 2007] Aman Gupta * Fix Haml/Sass options handling darcs-hash:20071122005737-569a4-a965f72a9f808b301875e7901ab95af8e5a719d5.gz [79bebb9 | Wed Nov 21 19:43:00 UTC 2007] Aman Gupta * Wrap long lines in ramaise, don't include Ramaze in examples darcs-hash:20071121204344-569a4-8e66c09d644b4cede43ab863271cb11acbfaae53.gz [2809257 | Wed Nov 21 19:40:00 UTC 2007] Aman Gupta * Various hacks to get sourceview working in IE, some cleanups to reduce bandwidth and make page loads snappier darcs-hash:20071121204013-569a4-1bd685c71f36bb970e6a9db10956c5f3fa5f7c5b.gz [b9b5757 | Wed Nov 21 07:05:00 UTC 2007] Aman Gupta * Add Ramaise example (Ramaze version of the Reprise hAtom blog) darcs-hash:20071121080515-569a4-c62984318db56bf9f5ec79961b9cab6e678265dd.gz [0a67b91 | Wed Nov 21 04:52:00 UTC 2007] Michael Fellinger * Update README darcs-hash:20071121055247-cbc08-e0b16c45d2ff5d153a818d4ad2076fd965f036aa.gz [3fa8a25 | Wed Nov 21 02:48:00 UTC 2007] Aman Gupta * Simplify Thread.into + spec darcs-hash:20071121034835-569a4-af642cd16020a619b8ed22f077a9fa5ef4152622.gz [adb6b00 | Wed Nov 21 02:26:00 UTC 2007] Aman Gupta * Random minor spec cleanups darcs-hash:20071121032643-569a4-b9139096d0ed45052770dd7931711d828ec23fc4.gz [6f46085 | Tue Nov 20 21:02:00 UTC 2007] Aman Gupta * Use cache as a wrapper for value_cache when no args are provided darcs-hash:20071120220219-569a4-b4ff76a8ac85d5742433e1cd81606c1d0e7562bb.gz [19e864c | Tue Nov 20 07:51:00 UTC 2007] Michael Fellinger * redirect_referrer on login in AuthHelper, a lot more useful and smoother darcs-hash:20071120085143-cbc08-41c8b0d7c94ee48faf0eea196b5e0cf64d382453.gz [c6541d3 | Tue Nov 20 07:05:00 UTC 2007] Aman Gupta * Minor cleanups to sourceview example darcs-hash:20071120080500-569a4-92b1d914b6f4f7085526da04bc6e4be6cdf5da72.gz [7dac80c | Tue Nov 20 03:27:00 UTC 2007] Michael Fellinger * Update allison raketask to use new version. darcs-hash:20071120042745-cbc08-bac2a5d382d5b9ba61e6ddf3599e547397c6e06f.gz [72be278 | Mon Nov 19 15:36:00 UTC 2007] Michael Fellinger * keep darcs repo one step ahead on 0.2.1 darcs-hash:20071119163602-cbc08-442153c12e86ebe01ba0c640bc4e1d342307a5cd.gz [4915619 | Mon Nov 19 15:18:00 UTC 2007] Michael Fellinger * Update doc/CHANGELOG darcs-hash:20071119161803-cbc08-9c4f79bd74d57b0350be25afa6983e3a61e86009.gz [e7b0d37 | Mon Nov 19 15:16:00 UTC 2007] Michael Fellinger * Update TODO, Version and announcement darcs-hash:20071119161642-cbc08-632aba02fbc7d80356a4e5300eddc680ebbe1b33.gz [c53130b | Mon Nov 19 13:03:00 UTC 2007] Michael Fellinger * add (c) for Thread::into darcs-hash:20071119140334-cbc08-e32aacfd67914d719f4af74f3e19f013424d1b01.gz [e247633 | Mon Nov 19 12:56:00 UTC 2007] Michael Fellinger * Adding Thread::into, almost forgot about it. darcs-hash:20071119135622-cbc08-6d3e79c24b4e50e1ee4869e2a6e1e1d4452abbde.gz [47d696a | Mon Nov 19 12:47:00 UTC 2007] Michael Fellinger * Remove Tool::Tidy and all traces of it, it's leaking memory, has problems upgrading and isn't used by anybody i know of. darcs-hash:20071119134743-cbc08-2fa141e41d950e1d13bbe8f3991938c07ced82ca.gz [3bca30b | Mon Nov 19 08:31:00 UTC 2007] Michael Fellinger * Update doc/meta/announcement darcs-hash:20071119093159-cbc08-9e9fb449bd79e977a8a0904a7237008519cee710.gz [0c40490 | Sun Nov 18 03:19:00 UTC 2007] Michael Fellinger * Using OrderedSet instead of Set helps keeping sessions deleted in chronological order darcs-hash:20071118041907-cbc08-e2491414ec7a8183817d4def2ba99b345af8a774.gz [990e03d | Sun Nov 18 02:33:00 UTC 2007] Michael Fellinger * Fix runner/starter/SEEED/APPDIR for bin/ramaze once again. darcs-hash:20071118033317-cbc08-a66cfe42286cd51ec1b00a5098adec69d704cc12.gz [e71153e | Sat Nov 17 22:18:00 UTC 2007] Michael Fellinger * Fix typo in string#/ darcs-hash:20071117231809-cbc08-b17179a4448fd690f1caf335472babd6d8827b22.gz [4b410c7 | Sat Nov 17 22:11:00 UTC 2007] Aman Gupta * Fix some spelling mistakes and clean up authors and patchstat rake tasks darcs-hash:20071117231150-569a4-2b34b3e2eac14ec9bee93859219c9eccf159d6fa.gz [27bebf0 | Sat Nov 17 22:06:00 UTC 2007] Aman Gupta * Updated doc/AUTHORS darcs-hash:20071117230650-569a4-710b1c2af1c5907df1eb9868c85c2f0984076394.gz [5a92869 | Fri Nov 16 19:30:00 UTC 2007] Aman Gupta * Add simple spec for examples/css darcs-hash:20071116203008-569a4-6d771646cfed616e788a8fdbd31c6f92f107ed93.gz [4bb284d | Fri Nov 16 04:26:00 UTC 2007] Aman Gupta * Add dynamic css controller example + related sourcereload/caching enhancements darcs-hash:20071116052612-569a4-85932ecc9c39f7041b71619412d4b09fad351ff9.gz [4090e0f | Fri Nov 16 03:19:00 UTC 2007] Aman Gupta * New caching implementation, add support for :ttl and :key options + rdoc + specs darcs-hash:20071116041910-569a4-c585e497b1b85eded27b2dcdafa6a499f894c18a.gz [a94ea36 | Fri Nov 16 03:00:00 UTC 2007] Aman Gupta * Clean up examples/caching darcs-hash:20071116040019-569a4-545b7213ff3fdc538404dc07e2a0bfcc521a9d4e.gz [f3a99bc | Thu Nov 15 23:19:00 UTC 2007] Aman Gupta * Improve file cache to work with mapped controllers darcs-hash:20071116001925-569a4-c212bacb19402bd48972ee640b7beb5ddb7dd91a.gz [3bf579c | Wed Nov 14 20:44:00 UTC 2007] Aman Gupta * Add Controller#cache wrapper for trait :actions_cached darcs-hash:20071114214455-569a4-6ecacc3c41138008950e467ccedb8d7fc6082c13.gz [2a7d5f9 | Wed Nov 14 20:41:00 UTC 2007] Aman Gupta * Prevent already initialized constant warnings in session spec darcs-hash:20071114214158-569a4-071bb3f5614577a592fdd76fdae2ca5de4c50f83.gz [41eee3e | Tue Nov 13 02:56:00 UTC 2007] Michael Fellinger * Add traits task to list traits we have, only for quick and dirty overview, a bit buggy darcs-hash:20071113035607-cbc08-54b2c7138fac379a00b75d297ce5d0afbfad6817.gz [7ebb035 | Mon Nov 12 03:04:00 UTC 2007] Michael Fellinger * Add spec for IP_COUNT_LIMIT bug darcs-hash:20071112040437-cbc08-03f2f331caa99259845bf84122021a48428b87a9.gz [d3433cc | Mon Nov 12 02:52:00 UTC 2007] Michael Fellinger * Improvment for add-copyright task darcs-hash:20071112035234-cbc08-268c5fddf02f0da4794d93f8ad06c7a265c75227.gz [cf43bbc | Mon Nov 12 02:48:00 UTC 2007] Michael Fellinger * Rewrite of helper/formatting for number_format darcs-hash:20071112034851-cbc08-61ade39ddd3c1307de28633b83a49caebfe31222.gz [374c960 | Mon Nov 12 01:09:00 UTC 2007] Michael Fellinger * Fixing Session::IP_COUNT, the same session-id should not be counted multiple times. darcs-hash:20071112020941-cbc08-135069db16ebf794775517faaaa1ffa6727b86c6.gz [4e35afc | Thu Nov 08 06:16:00 UTC 2007] Michael Fellinger * Update (c) and shipped libs darcs-hash:20071108071652-cbc08-678109ba6a31d3ecf681bb44430406e8e0fc6649.gz [f46174d | Fri Nov 09 21:34:00 UTC 2007] Aman Gupta * Bugfix from merb to get_args.rb darcs-hash:20071109223453-569a4-881d8826e93125f4db2e9dd930a6f6abb1781b62.gz [9caf140 | Fri Nov 09 07:57:00 UTC 2007] Aman Gupta * Don't log backtraces for Ramaze::Error::NoAction darcs-hash:20071109085749-569a4-29b5e50e7c95b10893408800c3e7115a816f774a.gz [ea1c01a | Fri Nov 09 07:56:00 UTC 2007] Aman Gupta * Add Ramaze::Contrib::AutoParams for merb 0.4 style action parameterization darcs-hash:20071109085636-569a4-b92577a086a353d5c7b9ba75abc4375cbf1bb7c4.gz [66771df | Wed Nov 07 18:20:00 UTC 2007] Aman Gupta * Hack to fix strange rack behavior on PUT requests darcs-hash:20071107192054-569a4-043ba1bc8575c489b4f77386596eded81b43fa47.gz [d34d855 | Wed Nov 07 17:21:00 UTC 2007] Aman Gupta * Print spec failure output so its readable darcs-hash:20071107182100-569a4-17b2fa79131c9df2b6ab43073aedf30f1d8fec58.gz [1d1178d | Wed Nov 07 17:20:00 UTC 2007] Aman Gupta * Allow get('/action', { :input => 'value' }) and get('/action', 'input=value') darcs-hash:20071107182051-569a4-08296cd576c07492da6eafcc397a91dbb5b02ebf.gz [d3fbf08 | Wed Nov 07 17:19:00 UTC 2007] Aman Gupta * Ran rake authors darcs-hash:20071107181925-569a4-bd66ba6a442edea5f42dd0be74ffe2ad72ca7a85.gz [001521b | Tue Nov 06 06:12:00 UTC 2007] Michael Fellinger * Move spec/helper/context to spec/helper/browser darcs-hash:20071106071244-cbc08-d7a81c26537337e2c326682d4775ea3705b18622.gz [e376f46 | Tue Nov 06 05:55:00 UTC 2007] Aman Gupta * Simplify hash.inject([]) to hash.map darcs-hash:20071106065510-569a4-36884e783e1291fe5537da8a3ed17c31a5062f43.gz [f2b7420 | Tue Nov 06 05:53:00 UTC 2007] Aman Gupta * Show last used email in AUTHORS file darcs-hash:20071106065305-569a4-d31157f7cc675c0786bd54228c0e9fbe37f7cdce.gz [2aef584 | Sun Nov 04 19:50:00 UTC 2007] Aman Gupta * Remove simple_auth dependency on base64, use Array#pack('m') instead darcs-hash:20071104205018-569a4-ce0f7c5d94114986c2ecf8549ac28686c4d58509.gz [c6eff00 | Sat Nov 03 23:21:00 UTC 2007] Aman Gupta * Add simple_auth example that implements Basic HTTP Authentication darcs-hash:20071104002135-569a4-ab2e42cf166a4e0dd9077ba8d00101fd267ed4ca.gz [2ab9eca | Sat Nov 03 21:37:00 UTC 2007] Aman Gupta * Cleanup RedirectHelper spec and add test for respond() with custom status code darcs-hash:20071103223743-569a4-7fbcdd7c4ca1b819421ce9b28440e6eb4b1c9b0c.gz [c9fec49 | Fri Nov 02 01:12:00 UTC 2007] Aman Gupta * Add Controller#respond to RedirectHelper + specs darcs-hash:20071102021213-569a4-7cfd9943835d8ec3939f4009e2c6b5a7beb9a108.gz [961877a | Tue Oct 30 19:26:00 UTC 2007] Aman Gupta * Add FormattingHelper + specs darcs-hash:20071030202620-569a4-27c58e89d3ca052aa307fdda8d181ee72d4cabd8.gz [f08c2e5 | Mon Oct 29 16:53:00 UTC 2007] Aman Gupta * Render aspects around actions before applying layout, and prevent aspects for render_template and layout rendering darcs-hash:20071029175353-569a4-cbb7598dc460340e2b7354133341f3c2b0cb4a3e.gz [f581258 | Wed Oct 24 23:08:00 UTC 2007] Aman Gupta * Change deprecated <%%> and invalid < use to prepare for Nagoro darcs-hash:20071025010841-569a4-21753003917c994c1402607a7bd9f013cd88737a.gz [0aa1ef7 | Wed Oct 24 23:07:00 UTC 2007] Aman Gupta * Fix references to Ezamar in template/nagoro.rb darcs-hash:20071025010738-569a4-eee975d8a09ee2f94ba4670ab667acdc1ac501ba.gz [a901546 | Wed Oct 24 23:06:00 UTC 2007] Aman Gupta * Refactored OrderedSet + specs again darcs-hash:20071025010622-569a4-70259b0287cb539f7b278817fde4608432f1a3d7.gz [b12fdcb | Wed Oct 24 20:48:00 UTC 2007] Aman Gupta * Update String#snake_case so CSSController automaps to /css instead of /c_s_s darcs-hash:20071024224807-569a4-0f5633a2bbc5c238b9c323e713981072ad8e4586.gz [32e8b5a | Wed Oct 24 19:56:00 UTC 2007] Aman Gupta * Layout cleanup - remove unused &block and don't include layout for render_template calls darcs-hash:20071024215624-569a4-33de178254f36de2d16be5b4ca9bab45289c8b93.gz [eaa8d6f | Wed Oct 24 19:17:00 UTC 2007] Aman Gupta * Clean up OrderedSet implementation and add more specs darcs-hash:20071024211728-569a4-46f49cc0d580c9d0f913fc566c2667f8b928c189.gz [dc90ef1 | Wed Oct 24 17:24:00 UTC 2007] Aman Gupta * render_template fix and specs for usage within loops and recursively darcs-hash:20071024192430-569a4-7f69a85e1f19402d0be8b8276dab247b2ec47308.gz [eaecaa8 | Wed Oct 24 17:18:00 UTC 2007] Aman Gupta * Allow for <%=@var%> style constructs with Ezamar (no spaces required) darcs-hash:20071024191800-569a4-13adf17603210d30718c425a4849e0138c84349b.gz [aef1d85 | Wed Oct 24 17:16:00 UTC 2007] Aman Gupta * Implement Dispatcher::Action::FILTER as an OrderedSet so it isn't affected by source reload darcs-hash:20071024191605-569a4-be5a2462caee82574841ad6edc5e9c22fe273ba4.gz [3431123 | Tue Oct 23 21:23:00 UTC 2007] Aman Gupta * Conform to http spec regarding absolute uris in Location header darcs-hash:20071023232322-569a4-2e70bea603b0e125240253601fa9bf77b3d5842f.gz [36a3bb2 | Mon Oct 22 01:40:00 UTC 2007] Aman Gupta * Update auth example to use new :load_engines config option darcs-hash:20071022034052-569a4-231df1a8089e00acc70d79c38431f8c5ff65b6c7.gz [befa5d9 | Sun Oct 21 02:54:00 UTC 2007] Michael Fellinger * Don't create meta-cache structure darcs-hash:20071021045418-cbc08-049b631d02376238e102e61ce97ef2c645ec4d5c.gz [74c44bb | Sun Oct 21 02:50:00 UTC 2007] Michael Fellinger * Require fileutils for Ramaze::Action::render darcs-hash:20071021045025-cbc08-0b9699c15114ce326e4c05870103245b64d93f03.gz [abbb2b3 | Sat Oct 20 18:36:00 UTC 2007] Michael Fellinger * Minor improvment of spec wrapper darcs-hash:20071020203620-cbc08-7e41d0bf29f282ed5b5e1e3e7f752d22366b288a.gz [e39a4ac | Sat Oct 20 16:59:00 UTC 2007] Michael Fellinger * ran fix-end-spaces darcs-hash:20071020185914-cbc08-9b82486f4ec4a897c0ccd248c4628a4dadaf156d.gz [8cae10c | Sun Oct 21 01:40:00 UTC 2007] Michael Fellinger * Fix cache spec and add Action#extended_path again darcs-hash:20071021034039-cbc08-8366986d96cda142413042f470534bad27b4f72a.gz [29e44d0 | Sat Oct 20 22:04:00 UTC 2007] Aman Gupta * Fix off-by-one on spec output and cleanup template_root references in various specs darcs-hash:20071021000435-569a4-0cb44f0ea59bdb88e7ceba33f93eaad78b601ff0.gz [da8c004 | Sat Oct 20 21:09:00 UTC 2007] Michael Fellinger * Fix Global options for (template|public)_root in spec/helper darcs-hash:20071020230923-cbc08-3272607744f2569fb56984b67f167084fa19e7be.gz [2e165d4 | Sat Oct 20 20:11:00 UTC 2007] Aman Gupta * Stop RDoc from complaining darcs-hash:20071020221159-569a4-c3cea44b6cec087d26c8fbaede13511a21153032.gz [98e9ec0 | Sat Oct 20 13:17:00 UTC 2007] Michael Fellinger * Don't activate Dispatcher::Directory by default. darcs-hash:20071020151755-cbc08-f9f33e2fdbf70b3d39a455523cb243811bbc7403.gz [03e65cc | Sat Oct 20 12:38:00 UTC 2007] Aman Gupta * Updated benchmark formatting for wiki and latest benchmarks darcs-hash:20071020143804-569a4-9aaffa2f72f22aee0555c99e54781362b09ce7ef.gz [e6ee9fa | Sat Oct 20 12:27:00 UTC 2007] Aman Gupta * Add Global.load_engines to specify templating engines to load at startup darcs-hash:20071020142750-569a4-cedf1089e9395016b068b3ba84a4940c6eebd6a4.gz [f4e805a | Fri Oct 19 16:27:00 UTC 2007] Aman Gupta * Clean up Controller#extension_order and add comment to Action#uncached_render darcs-hash:20071019182754-569a4-f0ca1477224fdc891cb632a79a3524ca7aaa264b.gz [2879aac | Fri Oct 19 14:23:00 UTC 2007] Aman Gupta * Add None template engine that does no processing darcs-hash:20071019162349-569a4-b2e3d54e2ab48b7574a42401d3b4effa95139ddc.gz [54c0a34 | Thu Oct 18 19:39:00 UTC 2007] Aman Gupta * Minor CgiHelper docfix darcs-hash:20071018213915-a47f2-843ba0d437b4745a23061afa5660889a30dfe771.gz [5abe26a | Thu Oct 18 19:35:00 UTC 2007] Aman Gupta * whywiki example cleanups - remove extra output, use Rs() instead of R(self) and use methods defined by CgiHelper instead of CGI.(un)?escape darcs-hash:20071018213549-a47f2-1ae6512c7f9b981661f5ae8849203238a8939cbd.gz [28d01c6 | Thu Oct 18 14:38:00 UTC 2007] Aman Gupta * Allow render_template to work recursively + spec darcs-hash:20071018163846-a47f2-61a6717e10ca767b7545e6f40fb0f1e444bad658.gz [e2db7e7 | Thu Oct 18 10:29:00 UTC 2007] Michael Fellinger * Add spec for whywiki (ty @ riffraff) darcs-hash:20071018122930-cbc08-5f286f2cba5020f4f80522e113a93fb57dfa617d.gz [425c4ab | Thu Oct 18 02:47:00 UTC 2007] Michael Fellinger * Add Ramaze::APPDIR to complement Ramaze::SEEED, make Global.public_root and Global.template_root relative from the APPDIR so we don't have to care where we run start.rb from darcs-hash:20071018044723-cbc08-9280b107582ee308f7359f374f13023d39fd6c7c.gz [520b5f4 | Thu Oct 18 02:47:00 UTC 2007] Michael Fellinger * Change spec to point to an unexisting file in any case darcs-hash:20071018044704-cbc08-35d2fee4f8e51a883e5621ffd15b77bc49117000.gz [cb70dba | Thu Oct 18 02:42:00 UTC 2007] Michael Fellinger * Some improvments for whywiki darcs-hash:20071018044220-cbc08-466cb278f53f5cae88e51142b11ace14296379c3.gz [f17a4db | Wed Oct 17 21:40:00 UTC 2007] Michael Fellinger * Introduce Controller::engine and change specs to use the new form darcs-hash:20071017234039-cbc08-830e4cf124a866ec1c256911b2ccc4c79988ec75.gz [4f664c5 | Wed Oct 17 11:07:00 UTC 2007] Michael Fellinger * LinkHelper was escaping query-parameters, update implementation and specs. darcs-hash:20071017130736-cbc08-0ee3fbd1e09193a5e8160b5c3cb606406be2340d.gz [9fa39ba | Wed Oct 17 11:07:00 UTC 2007] Michael Fellinger * Add template example for nagoro darcs-hash:20071017130725-cbc08-50d793f9385eebec0a02dbc16294fabe4c029c43.gz [fc541f4 | Wed Oct 17 10:31:00 UTC 2007] Michael Fellinger * Remove some junk from Rakefile, we don't use svn darcs-hash:20071017123101-cbc08-86a4f413eb1622a77723837d436425d3a50aec40.gz [1a4879f | Wed Oct 17 10:28:00 UTC 2007] Michael Fellinger * Make examples/sourceview work anywhere darcs-hash:20071017122821-cbc08-9c8392a9d04a1ab8df34954399521edde28f9f26.gz [a31a674 | Wed Oct 17 17:24:00 UTC 2007] Aman Gupta * A few cleanups to the whywiki example (thanks gimb) darcs-hash:20071017192459-a47f2-077bec6f22ba7f67f6de7ede7a077dd50582da45.gz [44e16c0 | Mon Oct 15 20:13:00 UTC 2007] Aman Gupta * Add caching to sourceview darcs-hash:20071015221353-a47f2-b77ff6aa326eeeddee8571a8f9dc108e7bf9a88e.gz [38acee8 | Tue Oct 16 12:49:00 UTC 2007] Michael Fellinger * Keep the session[:STACK] out if we don't need it darcs-hash:20071016144938-cbc08-dff5c9a55d33d14295154ec4460e025ec365c09c.gz [5af8b2a | Tue Oct 16 12:09:00 UTC 2007] Michael Fellinger * Simplify redirection darcs-hash:20071016140908-cbc08-66f58ba14de6c326863ca3513c248205e0d46168.gz [3270da5 | Tue Oct 16 12:08:00 UTC 2007] Michael Fellinger * Correct $LOAD_PATH in spec/helper.rb darcs-hash:20071016140854-cbc08-ee2cd874b3a2e689f7291a76a2ed2add63baca1c.gz [b9704f3 | Tue Oct 16 11:31:00 UTC 2007] Michael Fellinger * Sequel API change darcs-hash:20071016133116-cbc08-67f0105c14ea5a921b9563f1aab56a453b10e0ab.gz [16f88c5 | Tue Oct 16 12:53:00 UTC 2007] Michael Fellinger * Small improvment for docs of RedirectHelper darcs-hash:20071016145327-cbc08-e9c76246c9d71663ce8c255b07f6a2826be21c03.gz [5b641e2 | Tue Oct 16 12:52:00 UTC 2007] Michael Fellinger * Small beautification to Dispatcher::File darcs-hash:20071016145239-cbc08-d6f46429d6946c359058fbfbc20d8ba01f2b8b59.gz [97483dc | Tue Oct 16 13:20:00 UTC 2007] Michael Fellinger * Don't mention coderay in README anymore darcs-hash:20071016152037-cbc08-2aca61e7e9697bed78005dd5d8e50e892d84f120.gz [8e718d2 | Tue Oct 16 10:00:00 UTC 2007] Michael Fellinger * Adapt Nagoro for latest API changes darcs-hash:20071016120024-cbc08-082562cd248145e608f9f58d900d717801741b21.gz [df306af | Mon Oct 15 02:58:00 UTC 2007] Michael Fellinger * Add (for now optional) support for Nagoro templates. darcs-hash:20071015045805-cbc08-08c07cd057832fffcf888d837b7016954a926c26.gz [f173e0d | Fri Oct 12 10:41:00 UTC 2007] Michael Fellinger * Fix ezamar morpher, seems to break on 0.6 - simplify implementation at the same time... couldn't do a real benchmark for the new vs old since the old one doesn't seem to be able to process more complex documents, new one builds on XPATH functionality of hpricot and is a lot more robust but at the same time much easier to understand. Extend specs for it and don't require it by default anymore. darcs-hash:20071012124124-cbc08-284b7f040caf4181ab8a51f9584be4a2deab0d49.gz [b41dc41 | Thu Oct 11 13:26:00 UTC 2007] Michael Fellinger * layout example should not have an Element darcs-hash:20071011152604-cbc08-ce0a68a8dad9fc0a1282421bd97769f08c3f3c83.gz [338750b | Thu Oct 11 02:30:00 UTC 2007] Aman Gupta * Minor sourceview cleanups darcs-hash:20071011043035-a47f2-8592b2b111356237932ed259b124e14f026ffbff.gz [f1c333d | Thu Oct 11 01:51:00 UTC 2007] Michael Fellinger * Numeric#human_readable_filesize_format #=> Numeric#filesize_format darcs-hash:20071011035130-cbc08-6976b20f8704fcd78476c77402300b83f6a591d2.gz [6c05bcf | Fri Oct 05 03:48:00 UTC 2007] jesuswasramazing.10.pistos * gzip filter added darcs-hash:20071005054848-55b44-452cab7fe326ac89c88394f927ae49c0c96d9180.gz [ae4eb99 | Wed Oct 10 23:31:00 UTC 2007] Aman Gupta * Add sourceview example- syntax highlighting source browser for ramaze source code darcs-hash:20071011013118-a47f2-123028a542802f178dba579df5ab539036dcebf1.gz [424e1a4 | Wed Oct 10 10:25:00 UTC 2007] Michael Fellinger * Fix in layout example darcs-hash:20071010122507-cbc08-eb73f3b6d43053efcf5aeece96e67b44e3791fb6.gz [164d09d | Tue Oct 09 15:07:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Remove mention of Nginx from feature CGI darcs-hash:20071009170713-cbc08-63a5fb238fdaa46e6453acad787be86b04dbc9df.gz [f735da2 | Sat Oct 06 20:26:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * rescue MissingArgument for missing arguments in bin/ramaze darcs-hash:20071006222648-cbc08-c16ad470f1fae63b828e5fef5681113811ba6a99.gz [29dccc1 | Fri Oct 05 13:27:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add doc/LEGAL that is required by doc/LEGAL, holds a list of licenses and authors of files we use but do not 'own'. darcs-hash:20071005152720-cbc08-0c2e822f3856f9f57f06de47a73ce8eecda02e91.gz [36d8e60 | Fri Oct 05 03:29:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add Global.boring to avoid logging of some static files darcs-hash:20071005052916-cbc08-60e47228ba9b909c442145dc2ed3e05ed88d75e6.gz [78462ba | Thu Oct 04 23:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Don't overwrite Global on sourcereload darcs-hash:20071005015003-cbc08-8751221b3cd7b1b150995e31e67539e27088c330.gz [c334e24 | Wed Oct 03 02:38:00 UTC 2007] Aman Gupta <ramaze@tmm1.net> * Move auth example into its own dir and separate out templates so action stubs aren't required. Make AuthHelper#login_required private darcs-hash:20071003043840-a47f2-f8c3144ae36a2a757a44d637dd1db2ae2728be22.gz [de97ad1 | Tue Oct 02 23:05:00 UTC 2007] Aman Gupta <ramaze@tmm1.net> * Add benchmark suite darcs-hash:20071003010530-a47f2-fcd15aee4fdf85e1b2d8e7cd89f7672920504981.gz [f7240c7 | Tue Oct 02 21:47:00 UTC 2007] Aman Gupta <ramaze@tmm1.net> * AuthHelper cleanups and an example using Sequel darcs-hash:20071002234747-a47f2-1828f2537d1d6aeb756c29930cc4a912969313a1.gz [37709d8 | Tue Oct 02 21:43:00 UTC 2007] Aman Gupta <ramaze@tmm1.net> * Ignore /favicon.ico by default darcs-hash:20071002234355-a47f2-9cf4228553f5284a79700f41d304066bb749c8dd.gz [21e16c5 | Tue Oct 02 21:36:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add the needed adapter/swiftiplied_mongrel and adapter/evented_mongrel darcs-hash:20071002233631-cbc08-34129ea55cf5a8e3f51ccab147228b2a8bc4d9db.gz [49c7302 | Tue Oct 02 21:31:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Support :adapter => (:evented_mongrel|:swiftiplied_mongrel), setting by ENV with :adapter => :mongrel and (SWIFT|EVENT)=1 should still work. we require 'mongrel' in any case, could that lead to problems? darcs-hash:20071002233135-cbc08-aea1eaf7b49a5744471d6381b58e5315738fcc2e.gz [2ed95d0 | Tue Oct 02 13:25:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fix hash-order issue for gestalt spec. darcs-hash:20071002152504-cbc08-c6dbda1fc089ec39914bd8af9d10c060f847accd.gz [857ffdf | Sun Sep 30 14:33:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fix reference and logging of CGI adapter. darcs-hash:20070930163354-cbc08-3acaadae564707995869ae9547155a9da11af6bc.gz [ff638c8 | Sun Sep 30 03:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fix docs for AuthHelper darcs-hash:20070930051429-cbc08-7f68d1b074d0e8ddb9c12ea6cac83dddc757ca28.gz [6317d25 | Sat Sep 29 11:37:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Gestalt should accept symbols as attributes darcs-hash:20070929133737-cbc08-135fa563781d15cb00d076ef4e1aea8343ccc6d0.gz [f1eea9a | Wed Sep 26 14:02:00 UTC 2007] Jonathan Buch <john@oxyliquit.de> * [localize] normalize session locale too darcs-hash:20070926160207-2c51e-3bc407f0b70556ed776db15fa25586d6ba1281ab.gz [9b5d0a6 | Wed Sep 26 08:20:00 UTC 2007] Jonathan Buch <john@oxyliquit.de> * Minor cleanup of whitespace darcs-hash:20070926102009-2c51e-5ed615857604052e3e8df5d8be2767a3988dd0ed.gz [e7f2753 | Wed Sep 26 07:55:00 UTC 2007] Jonathan Buch <john@oxyliquit.de> * [localize] normalize dictionary to regard symbols and strings the same, add usage doc darcs-hash:20070926095546-2c51e-ec3f428faf3ea109edb5a3105a71aa1a8b0817e1.gz [82feb89 | Tue Sep 25 15:11:00 UTC 2007] Jonathan Buch <john@oxyliquit.de> * Expand new Layout lookup so it can be relative paths too (no / at beginning means current controller) darcs-hash:20070925171154-2c51e-58406b78c0d94afd9ddc311ceb2e1b5e051d2586.gz [eb8ad53 | Tue Sep 25 14:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add Stephan Maka to authors. darcs-hash:20070925160834-cbc08-762a3361eadb7600106c128abe912e1f4dcb7c09.gz [767c01a | Tue Sep 25 02:23:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * spec/helper/wrap now handles rubygems version mismatch better. darcs-hash:20070925042337-cbc08-34b21d674bb85ad87ba804d1771b5debccddd648.gz [1f6504c | Tue Sep 25 02:17:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Do not automatically wrap layout paths in R(self, path) anymore, this allows for absolute paths so you can use layouts from other controllers easily. darcs-hash:20070925041727-cbc08-2199d3e7b932c0f5f99fb292bc992e664c772b30.gz [9960e44 | Tue Sep 25 12:05:00 UTC 2007] jesuswasramazing.10.pistos <m.fellinger@gmail.com> * trivial comment changes darcs-hash:20070925140510-55b44-dd851d5f69b3bce06ce064cf1d5d1ac582dd8e37.gz [35ea991 | Sun Sep 23 03:12:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Global.ignore now only ignores files if they don't exist. darcs-hash:20070923051241-cbc08-9cf319a0216946e8dddf84907ca97acc4cfe967a.gz [0ca3cec | Sun Sep 23 03:09:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fix requires for to specs. darcs-hash:20070923050957-cbc08-1fce5d31936a5229fc90835bb3fbb6132e81e5b1.gz [c1910ef | Sat Sep 22 17:17:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Remove unused methods from Action darcs-hash:20070922191754-cbc08-82ccafdda906f3a99ef91dfabe0477c447bfbdaa.gz [832caa6 | Fri Sep 21 20:55:00 UTC 2007] stephan <m.fellinger@gmail.com> * XSLT template example: add Content-Type darcs-hash:20070921225525-84564-6106a40d8a3092ca3fe469faf64a62c085eeb7c7.gz [a4fd3ab | Fri Sep 21 11:00:00 UTC 2007] stephan <m.fellinger@gmail.com> * XSLT template spec: two more examples darcs-hash:20070921130029-84564-45f0f811021b963cb343c13ea464bbf0b4328d5f.gz [e1e33ca | Fri Sep 21 09:56:00 UTC 2007] stephan <m.fellinger@gmail.com> * XSLT templates: add extFunctions capability darcs-hash:20070921115648-84564-9bd703b7a1e4342a0af50c8e547aae13361e9bb4.gz [7318203 | Wed Sep 19 23:10:00 UTC 2007] stephan <m.fellinger@gmail.com> * Ramaze support for XSLT templates, example darcs-hash:20070920011044-84564-fed68f9a85f2d9b950ba7b22461bc7328405a7d5.gz [97d00ac | Fri Sep 21 12:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Instruct SourceReload to expand filenames before loading to make sure they really do exist where we think they do. darcs-hash:20070921140842-cbc08-657f6825a4540837a0c34daac9a73f022e3fcf99.gz [118c49d | Fri Sep 21 06:17:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Slight 'beautifcation' for specwrapper darcs-hash:20070921081739-cbc08-0a5bc91560aad9866dda26f9b0d58d262fa7a4d2.gz [8fe533d | Fri Sep 21 06:09:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * SourceReload#reload_glob is now SourceReload.trait[:reload_glob] for ultimate control. darcs-hash:20070921080937-cbc08-3584b325915224b7ad636ec6217000f91fbed8d2.gz [e3cc624 | Fri Sep 21 04:42:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * This improves logging a bit by introducing the :dev tag and so lowering the overall output in default mode. darcs-hash:20070921064236-cbc08-72a82b73eb121900775a458d2a42e930b2a23d09.gz [9d93b23 | Wed Sep 19 13:36:00 UTC 2007] Aman Gupta <ramaze@tmm1.net> * alias Ramaze.contrib to Ramaze::Contrib.load darcs-hash:20070919153655-a47f2-c2261a94f8bdeca0a500f7388add3e3318be1b12.gz [c4bb39f | Thu Sep 20 13:33:00 UTC 2007] stephan <m.fellinger@gmail.com> * Gestalt: allow text in arguments, properly escape this text and attributes darcs-hash:20070920153337-84564-e776cb9c5f4c41f2d603648275eab3ebfa40ae1d.gz [b1ed0da | Wed Sep 19 04:24:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add $0 to files being sourcereloaded. darcs-hash:20070919062417-cbc08-21560d47e841520e3b88ee0990d3cf12db390b29.gz [40db4d8 | Wed Sep 19 04:21:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Implement Global.ignore and spec it. darcs-hash:20070919062143-cbc08-0a8f92b743e76c77d09a079639063ced36a64ae3.gz [48faba5 | Tue Sep 18 08:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add Global.cache_alternative so you can specify a different cache-class to use for only certain caches. For example: Ramaze::Global.cache_alternative[:sessions] = Ramaze::MemcachedCache darcs-hash:20070918104659-cbc08-7d174e63fabb257ec2dbb4c8f69210414be24116.gz [129b28d | Tue Sep 18 03:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Small improvment to the sequel/fill contrib darcs-hash:20070918054112-cbc08-651a9027bd381ae5493d9210e49ad844d9d81d41.gz [44d016d | Tue Sep 18 03:33:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add contrib/sequel/fill darcs-hash:20070918053330-cbc08-a37d85167c19f77a3b3da220e0883cd84b03a654.gz [60b6857 | Tue Sep 18 02:54:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * alias redirect_referer to redirect_referrer in RedirectHelper darcs-hash:20070918045439-cbc08-483b703119ae98b86d23057abe0a606ed7051182.gz [e6fa249 | Mon Sep 17 23:48:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Allow custom /helper directory in apps, will be searched before ramazes helpers. darcs-hash:20070918014843-cbc08-31ab1e74cbbcae26a8fd53a6e1b77308a4f410f5.gz [22324e0 | Mon Sep 17 09:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add the wikore example and fix spec for wiktacular a little. darcs-hash:20070917114503-cbc08-026d77dd0a1f13a041e3b341b5c785882ef26833.gz [31a865a | Mon Sep 17 09:44:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Improve output of spec wrapper a bit. darcs-hash:20070917114458-cbc08-4ced554217bf18124d4dd9967e7426c50f5b0720.gz [6244e7f | Wed Sep 12 10:52:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Adding path for OSX to tool/tidy and improve readability of the spec for it a bit. darcs-hash:20070912125255-cbc08-a494508f20bf4280ee22c68c8a77768c2090d536.gz [c135484 | Wed Sep 12 07:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fixing dependence on the debug.rb implementation of ruby, since this may vary between different versions/implementations, use gestalt.rb instead, the oldest and most stable file we have. darcs-hash:20070912090809-cbc08-786f70d63005b0654324dcf3dc6e250d96eff1ee.gz [8a119f7 | Tue Sep 11 06:47:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Small beautification/speedup for the mocked http darcs-hash:20070911084731-cbc08-bca2d241cac907c29cdfc79510487dd067fef802.gz [a953d00 | Tue Sep 11 14:29:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Clean up the controller/resolve part a bit, implement raise_no_filter which throws a NoFilter error now and fix a minor bug that would result in a faulty response if an element of Cache.resolved was no valid action. Added docs for all methods in Controller. darcs-hash:20070911162955-cbc08-1e89e2ada71e6b4ccadde4c353ee8c9e1958379f.gz [890d04b | Tue Sep 11 12:48:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Restructuring of how contribs are handled, introducing the Ramaze::Contrib namespace, adding Global.contribs so we can add a unified shutdown in future, fixing routing so it won't try to match an already resolved route again and thereby avoiding recursion. darcs-hash:20070911144843-cbc08-97a0b6fa319fd1ff5816a139ce3cedda5161540c.gz [f4dd584 | Tue Sep 11 03:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Adding snippet for Array#put_within/put_before/put_after plus specs. docs missing. darcs-hash:20070911054158-cbc08-3b428805cb2293989b4ca31f296083adb357e9f2.gz [ef74745 | Mon Sep 10 04:32:00 UTC 2007] Aman Gupta <ramaze@tmm1.net> * Updated spec for route darcs-hash:20070910063242-a47f2-145247d601529f9c07e8da4eb8162c2f8ec5e6db.gz [699bf0a | Mon Sep 10 02:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * This introduces the first contrib for routes, slight restructuring of Controller::resolve to allow filtering based on Controller::FILTER like we know it from Dispatcher. Added dictionary.rb from facets to allow sorted but hash-like routes-adding. Spec for routes added as small showcase. darcs-hash:20070910044521-cbc08-34be9cec98d83d68190cea7666aabac8c014a82d.gz [c87054c | Mon Sep 10 02:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add basic Ramaze::contrib as future helping instance for contributed things. darcs-hash:20070910044506-cbc08-5a222bc6afca97ac5cb260c8adb695df8f3908af.gz [1cc0906 | Fri Sep 07 06:32:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * make snippets/struct/values_at behaviour compatible with standard ruby (orig. by riffraff) darcs-hash:20070907083216-cbc08-15573d60e34d3925d362a9ccd2dbd894f4ad9bc6.gz [9ed8166 | Fri Sep 07 06:31:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fix for directory-listing, always sort files/dirs shown darcs-hash:20070907083158-cbc08-81efc379bbdfedc7e079d217a814bb20d7c5b487.gz [ceb3689 | Thu Sep 06 11:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update doc/CHANGELOG darcs-hash:20070906135154-cbc08-7fee003a5869128959fbc06552f52885eb01f9b6.gz [4913b70 | Thu Sep 06 11:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Version 0.1.4 darcs-hash:20070906135132-cbc08-2be9f94b55fb352f20e68e4f6be699bc59945fb6.gz [00027e7 | Thu Sep 06 11:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Make Struct#values_at backwards-compatible but remove Symbol#to_int (deprecated by ruby1.9) darcs-hash:20070906135122-cbc08-4bc481eb9ad9a22e027b43e3df68a8407a3771e9.gz [0d8b847 | Thu Sep 06 11:49:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fix typo in human_readable_filesize_format darcs-hash:20070906134948-cbc08-3f560b69dee9e38498b801795bd537e48b6cfdff.gz [04bd5b5 | Thu Sep 06 11:49:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update things in /doc darcs-hash:20070906134934-cbc08-d7d70473ecfce90160ce6c43ac6e4452a5112783.gz [3869e58 | Thu Sep 06 11:48:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update doc/AUTHORS darcs-hash:20070906134856-cbc08-2ffaa3db7d005918195ea4fcf8bd53f541bc5f7d.gz [b16fdcf | Thu Sep 06 03:28:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fixing some more spaces. darcs-hash:20070906052818-cbc08-69eb56affde06f09994d686311b9fb6c4a2c2d47.gz [cf67444 | Thu Sep 06 03:28:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Adding (c) to Numeric#human_readable_filesize_format darcs-hash:20070906052801-cbc08-ebcd3d3089f32fdfe372b6ac55ccda4a6b19f3ac.gz [798a4d4 | Thu Sep 06 03:27:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Adding --instant option to start bin/ramaze with an empty controller. darcs-hash:20070906052751-cbc08-c089de3cb84a0bada97d99997c3d6d8d5329989b.gz [784a9b5 | Thu Sep 06 03:23:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Adding Numeric#human_readable_filesize_format and using it in the directory-listing. darcs-hash:20070906052336-cbc08-1cfd47c7380a6c306d2ac175529eca88f22976f4.gz [457c80d | Wed Sep 05 14:10:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove some useless debugging-information darcs-hash:20070905161041-cbc08-a30019d14dc325c6a3c8d493b7f42a1e51c89b4c.gz [aba5f4d | Wed Sep 05 13:57:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove deprecated spec from dispatcher/file darcs-hash:20070905155747-cbc08-6ef402fc7437c09413b175b2baa0c8e519654361.gz [d42a907 | Wed Sep 05 13:52:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Remove the now useless controller/directory darcs-hash:20070905155229-cbc08-4a69b425b85abd616500c74405670e9b55ad398b.gz [38f8a50 | Wed Sep 05 13:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Minor fix to Action#extended_path darcs-hash:20070905155024-cbc08-4d933e0f54243e8bfe4333a0426aef237f9051c7.gz [261794f | Wed Sep 05 13:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Medium refactoring of bin/ramaze, adding better functionality in Global for it and adding some niceties for Global.public_root/template_root darcs-hash:20070905154638-cbc08-889e3e71b93f7e14945a69e854f3f60f56ce7988.gz [87217ea | Wed Sep 05 08:52:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * spec for Informer case statement in initialize darcs-hash:20070905105259-16231-d1992d2b870aaa1c06a969f5342090bb74695544.gz [4474e31 | Wed Sep 05 08:07:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * spec for Action#to_hash darcs-hash:20070905100709-16231-b62338c93c5239b3ea7c788a109fada71430145a.gz [48e3597 | Wed Sep 05 07:36:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * spec for Struct#values_at darcs-hash:20070905093622-16231-bae521f283acb291f48629bbcdecbaafc9da2a3e.gz [139252d | Wed Sep 05 07:34:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * spec for Struct#fill darcs-hash:20070905093439-16231-5f729a2f467e3a6ea621d9f86f24f30aeebcb57f.gz [8d9d7fd | Wed Sep 05 07:32:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * make snippets/struct/values_at behaviour compatible with standard ruby darcs-hash:20070905093213-16231-698db091f4390bc4dd05b229614dbd1791c9d605.gz [3a5882c | Wed Sep 05 02:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * The usual, fixing some end-spaces. darcs-hash:20070905041424-cbc08-b144d474b97e4a65060ed6ea55a2a4ce3f3c6153.gz [ed9725e | Tue Sep 04 10:10:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * doc fix for caller_lines darcs-hash:20070904121056-16231-b73b0d266c33c0ab5e09fa736fab454db85d761b.gz [4d76460 | Tue Sep 04 10:07:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * spec for Ramaze#caller_lines darcs-hash:20070904120759-16231-6ca5b1bdc1f0ff352d79d4679ba575241b1590fb.gz [48c873a | Tue Sep 04 09:54:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * spec for Ramaze#caller_info darcs-hash:20070904115414-16231-fe11cfd5240d308d86a686f81840d57e17e318d9.gz [c044ff5 | Wed Sep 05 13:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fixing directory listing and adding spec darcs-hash:20070905154147-cbc08-20a22b0ca00e49968d5cef126e5bb9c886494b42.gz [ad74951 | Mon Sep 03 08:56:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * remove useless snippets/openstruct darcs-hash:20070903105607-16231-e4cb423a69038db989c785b6f42c6cc413c20a83.gz [f6b9986 | Mon Sep 03 08:41:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * spec for String#snake_case darcs-hash:20070903104157-16231-202012303caedb1c8b32a0c2f70d7be54fa9bb8c.gz [448adc2 | Mon Sep 03 08:35:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * spec for String#DIVIDE darcs-hash:20070903103556-16231-2dc6c14c95616a1af833de81829534a3b753818c.gz [eafd1e7 | Mon Sep 03 08:31:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * spec for String#color darcs-hash:20070903103155-16231-2594498e70d00a18545098aba9c597e56b003721.gz [8e2f6a1 | Mon Sep 03 08:24:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * tests for snippet/string/camel_case darcs-hash:20070903102405-16231-9c1986174b7d4fa9a2b7c5a8b25bb091815011aa.gz [a94056a | Mon Sep 03 06:59:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * small spec for __DIR__ snippet darcs-hash:20070903085938-16231-638c3943e20a078a03f5c83b00e8138214afbb11.gz [5b60a44 | Mon Sep 03 06:55:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * snippets specs for aquire,constant darcs-hash:20070903085532-16231-ffa11e72d0702e90c6dd510b552ef1ca23f65713.gz [0da8b6e | Mon Sep 03 07:13:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fixing rake_tasks/spec for example specs darcs-hash:20070903091349-cbc08-d462b1c80464478c2ec94cb9c7766d46cbc41bec.gz [5020c23 | Mon Sep 03 05:37:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * more minimal READMES darcs-hash:20070903073746-16231-44cadf59448b80e8ac1ee048599523ebe9eeccbd.gz [055d0af | Mon Sep 03 05:19:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * README for examples/blog darcs-hash:20070903071939-16231-0d64dfbbac11c38ecc66c42045269ef4bb46edcc.gz [6d7fb60 | Sun Sep 02 18:41:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * Og's logger will write to STDERR which means that even if all tests pass SpecWrapper will show it in red and show the error report. It seems that using Ramaze::Inform as the default logger for it works, but maybe it should be done in start.rb, or we should use Logger.set(STDOUT) darcs-hash:20070902204140-16231-99df4cd25e18ecc5f8b0a741d81767e9d36a0847.gz [dea1180 | Sun Sep 02 15:41:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * removed require ramaze from wiktacular specs ) darcs-hash:20070902174120-16231-3da0b0f57dca68f42edb4a7c3c173c6f5a761dbf.gz [ade8d4a | Sun Sep 02 15:35:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * these are just simple specs for example/blog, again more useful to show users how to write tests than to test the ramaze infrastructure. Strangely, all test pass but it is shown with a red bar from ramaze's rake. darcs-hash:20070902173551-16231-63352c3a114451a2af11e84754ca0eaa40962470.gz [df7f84e | Sun Sep 02 14:56:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * specs for wiktacular/{revert/unrevert} + refactoring darcs-hash:20070902165603-16231-1aabd8ceee9ccfb1649cc6bb6d019c4965090f68.gz [ef1ec5e | Mon Sep 03 05:52:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Rewrite of Kernel#aquire darcs-hash:20070903075243-cbc08-cd15855555b8063d33049b4bc12e41110e6324fc.gz [ef76283 | Sun Sep 02 06:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Changing implementation of __DIR__ a bit. darcs-hash:20070902085110-cbc08-7a8c930a80b946e99933544676f4444dc3480c23.gz [0209eed | Fri Aug 31 10:49:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * more tests for wiktacular to show post() usage darcs-hash:20070831124904-16231-330b7146f8fac0f8d57e1673c89bee8891a1d292.gz [d2c2fea | Thu Aug 30 21:37:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fixing typo in StackHelper docs. darcs-hash:20070830233748-cbc08-9437b1877fa2b68512f3ca1a278102a333a4b046.gz [cd2ad91 | Thu Aug 30 07:09:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Adding the filecache meta structure and renaming Global.action_file_cached to Global.file_cache, adding Global.file_cache_meta_dir darcs-hash:20070830090925-cbc08-90b47bfc4baef5a651fde8e9044ebed6b899e235.gz [0c5bad4 | Tue Aug 28 12:15:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Make the wiktacular spec work standalone and fix its dependence on hash-order darcs-hash:20070828141540-cbc08-7bb843f127c0b5ec97732c749bbc990619b41149.gz [414a6b4 | Tue Aug 28 12:00:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * added __DIR__ snippet and change wiktacular to use it darcs-hash:20070828140007-16231-c7951974fe7fa4ca572fcb0cb7d420c9dce7e9ab.gz [8dfdfcc | Tue Aug 28 11:25:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * last __DIR__ usage in spec darcs-hash:20070828132548-16231-081a0d032b19af4342a028f6d653f7c62babfb75.gz [7129f58 | Tue Aug 28 11:24:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * __DIR__ usage in examples darcs-hash:20070828132404-16231-ee7b518470de97df253bc02414b81803dbaba7e8.gz [c7efea5 | Tue Aug 28 11:17:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * more __DIR__ usage in specs darcs-hash:20070828131703-16231-7a8ba30368453782b1000294fe4d6b0749c76691.gz [669fe08 | Tue Aug 28 11:11:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * changed todolist's spec to use __DIR__ darcs-hash:20070828131152-16231-8522d3cbc32ae5e97d4b48c443c462a869c03f41.gz [e99183c | Tue Aug 28 11:09:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * use __DIR__ in specs darcs-hash:20070828130956-16231-e94e47e30d2423a56da0800cc5170c2814274a2e.gz [2c21f23 | Tue Aug 28 09:30:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * refactor controller/model to hide path handling darcs-hash:20070828113004-16231-ea298a725705f9feb9b2f8bf328d1624adab62b7.gz [a5213d3 | Tue Aug 28 09:22:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * make wiktacular test work the dummy specs for wiktacular are now runnable standalone or from rake. It was a path problem. Needs consolidation in the model. darcs-hash:20070828112202-16231-34bb273c48c4ff4e1b37806182ce5b48bf7d50c8.gz [a0f6113 | Tue Aug 28 10:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Remove restriction on Haml, version 1.7.0 fixed the activesupport issue. darcs-hash:20070828120800-cbc08-b186a15c1b67ed35659a7159e30cac87eb056a5a.gz [10603f3 | Tue Aug 28 08:07:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Make executing spec-files directly work again. darcs-hash:20070828100746-cbc08-a55c8edf26f236653bc969322a5a4447e7894b01.gz [6d0ba42 | Tue Aug 28 08:06:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update memcached, remove our flush_all hack, since this is supported by the latest version, add alias from #clear to #flush_all darcs-hash:20070828100632-cbc08-06f51cfca4cbd77e9a23c3d46929ccba83a89ac6.gz [d31ddd9 | Sun Aug 26 13:37:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * fixed todolist.rb so that spec run fine both from ramaze's rakefile and standalone darcs-hash:20070826153748-16231-480e1a640b56722cc6e908c4f7465cf4dd0fd7b9.gz [2d8e7bc | Sun Aug 26 13:26:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * re-added a commodity spec/helper to avoid changing all spec files darcs-hash:20070826152612-16231-3b046d896b2ae8656f9ff71b47eb91c9dc398818.gz [3640aeb | Sun Aug 26 13:23:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * example/todolist's db will be deleted at each test run, so we remay darcs-hash:20070826152316-16231-d8337448e82d2f52610701670276de8747ae0cc7.gz [da507a2 | Sun Aug 26 13:09:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * move todolist's test in example/todolist/spec darcs-hash:20070826150950-16231-a39be5951bde933c53b98479d0250a206c1beac2.gz [601498c | Sun Aug 26 13:06:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * mv spec/helper -> ramaze/spec/helper and accomodated requires. This means that end-users can use it for their own proijects by requiring ramaze/spec/helper, and we can add tests to the examples instead of leaving them in ramaze's spec directory. darcs-hash:20070826150623-16231-f6ae8bcb82cc3f7a475dcbbe80bf4ac9d3516438.gz [248d30f | Sun Aug 26 13:04:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * add cancel links to wiktacular templates darcs-hash:20070826150419-16231-50c56d7d970146f5b3b5bad1e2b60cfa0799a22d.gz [400bb13 | Sun Aug 26 11:48:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add missing html_layout.xhtml for wiktacular example. darcs-hash:20070826134825-cbc08-83677c59aa32e94caf4bac12eb1f974d27f15252.gz [ada763d | Tue Aug 21 03:15:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fixing and improving filebased caching. '/' should be transformed to '/index' in Dispatcher::File. darcs-hash:20070821051523-cbc08-a3e75a3e21796234081aff7668b245a311233221.gz [6364657 | Sat Aug 18 09:54:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * adding some path related methods to Action darcs-hash:20070818115411-cbc08-8ac7152893495621617546ffe3b80e553b140195.gz [6d38153 | Sat Aug 18 09:13:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Adding filebased cache of actions... very alpha so please try it and suggest improvments (code donations more than welcome) darcs-hash:20070818111329-cbc08-546ac53e919052a7bcf23e8c3acae840374c40c6.gz [f47a6c0 | Sun Aug 12 07:02:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add Action#fullpath darcs-hash:20070812090249-cbc08-e5b63eef7bec79549c2369b3aadb33e44f653619.gz [29c06fe | Sun Aug 12 03:22:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Create new Action for requests, modifying the cached one is dangerous. darcs-hash:20070812052214-cbc08-b61bfa4b4c21d165ea43347762ac96072bc9ecda.gz [7e810d3 | Sat Aug 11 09:24:00 UTC 2007] Fabian Buch <fabian.buch@fabian-buch.de> * changed Adapter to circumvent JRubys TCPServer bug (http://jira.codehaus.org/browse/JRUBY-1266) Ramaze now works in JRuby with Webrick, tested on a PPC-Mac with JRuby 1.0 darcs-hash:20070811112427-464fd-5c11ee75a3aea71d6cae4da73518f9728fe9863a.gz [3cc0c04 | Wed Aug 08 09:12:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add detailed error-message if haml 1.7.0 is installed but no activesupport. darcs-hash:20070808111239-cbc08-25629fd2894c46ee3f57242c286cad99d3962c99.gz [3bae521 | Wed Aug 08 08:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Improve text for redirection. darcs-hash:20070808105020-cbc08-1e912abdce166648511fe8c66a0939961d3a593d.gz [0b96363 | Wed Aug 08 08:49:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Make examples/caching not based on computation, that is very error-prone and slow, use rand instead. darcs-hash:20070808104911-cbc08-1bc0f0b3c6e306317938ee2af42f006ab5e7b67a.gz [283ec5a | Wed Aug 08 08:47:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * More robust spec for informer darcs-hash:20070808104757-cbc08-dab0ad27411096f9bbb399e5e14330f39b080928.gz [ca5a113 | Fri Aug 03 03:56:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fixing multiple actions per layout. darcs-hash:20070803055615-cbc08-1600638aa91ea8f76a10d9e46ed21eac1491e980.gz [bfb1d72 | Thu Aug 02 13:13:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Remove references to FeedHelper/FormHelper from the features readme chunk. darcs-hash:20070802151301-cbc08-e0463c2e9892fed469f3efe297bf2899fda28374.gz [b511429 | Thu Aug 02 13:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update doc/meta/configuration.txt to reflect cookies => sessions. darcs-hash:20070802150840-cbc08-3a23202eb59f52f9e9b8fdbfd9332664f912c77e.gz [64f3686 | Thu Aug 02 13:03:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Global.cookies is now Global.sessions and actually works ;) darcs-hash:20070802150313-cbc08-281f844bee8a53edee8dabc4f127ef36fa9065fa.gz [567b581 | Thu Aug 02 02:42:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add examples/layout.rb darcs-hash:20070802044218-cbc08-ce58e33ad37a8848b550c1edd043804c0b2d2a7f.gz [b1a9850 | Tue Jul 31 10:16:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Making layouts more flexible but not yet stackable. darcs-hash:20070731121629-cbc08-5115e136a66997cb4b3a86855d5ff37504329a3e.gz [12735e3 | Mon Jul 30 09:48:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fix aspect spec and aspects for template-only actions. darcs-hash:20070730114841-cbc08-71664810ac8719cae452bbd974b33c75b23c766d.gz [d1793e1 | Mon Jul 30 07:11:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Harmonize Fcgi documentation and code darcs-hash:20070730091116-cbc08-62f375d8ac26b5bd9ad74f8736f993a3cead4da7.gz [2423276 | Sun Jul 29 22:06:00 UTC 2007] Aman Gupta <ramaze@tmm1.net> * Updated spec for aspect helper darcs-hash:20070730000620-a47f2-8ee2e1c14daccf5f317f3757e98519f0c73d0529.gz [3278a6c | Mon Jul 30 00:02:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update description of gem darcs-hash:20070730020225-cbc08-b5c6f6e8d385c2e4195706dee87b785bbf257d73.gz [cecd2de | Sat Aug 11 04:04:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Remove the faulty path from the post_install message on installing a gem. darcs-hash:20070811060413-cbc08-b0f661d63b12515e28ad4e2c908072c2dd61d758.gz [f30811c | Sun Jul 29 11:11:00 UTC 2007] comp.lang.zenix+ramaze <m.fellinger@gmail.com> * Added directory listing & another option darcs-hash:20070729131107-206fc-fe11fc42dc52fc21b84cfd95aa29988be5a7d5f0.gz [474ccd9 | Sat Jul 28 15:18:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * move Dispatcher::build_response to Response#build darcs-hash:20070728171834-cbc08-9c206125d8ef00717e977e0f79812f7772f57947.gz [a14a074 | Sat Jul 28 10:56:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * partial helper module docs, pager add docs for private methods too darcs-hash:20070728125641-21a65-2a50569dc204069e7d403f26d17de3a493615847.gz [c8768ef | Sat Jul 28 08:59:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Docs for Dispatcher::Action and RenderPartial, improving docs a bit concerning aspects *_all darcs-hash:20070728105945-cbc08-eb2481294e2813beaf9708a1a13ff985d1179267.gz [d97bc87 | Sat Jul 28 08:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Full docs for Cache darcs-hash:20070728104645-cbc08-a4130e5d3d4392b6900732f98b17e3eccddf9469.gz [93f3361 | Sat Jul 28 08:44:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Full docs for CacheHelper darcs-hash:20070728104449-cbc08-99e43a9c569a8a902ad155c3d4fec44b0fcb92f6.gz [9661fc7 | Sat Jul 28 08:43:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * A bit of meta-docs for IdentityHelper. darcs-hash:20070728104316-cbc08-230cfc5497c48176e28053a2e32af553db8d6c72.gz [029e2f2 | Sat Jul 28 08:30:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * finalize docs for controller/resolve darcs-hash:20070728103005-cbc08-df7fce42c912e153ee343be831db58e256f8a4ca.gz [d4aa719 | Sat Jul 28 08:26:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * document Localize class darcs-hash:20070728102635-cbc08-485d28d04dd4d34c5a7e8e9bf507698587ae4d4d.gz [f3b59b8 | Sat Jul 28 08:24:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Remove FormHelper and specs darcs-hash:20070728102438-cbc08-388ef316a30e7a136bea19dd0000864ceffa8454.gz [b53c0f0 | Sat Jul 28 08:22:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Remove ReFeed/FeedHelper and Store::YAML and their specs darcs-hash:20070728102252-cbc08-9fdde38700554b2b74446782302b8e269d3c0e8c.gz [6bd57d5 | Sat Jul 28 09:22:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Pager: documentation, major spec update darcs-hash:20070728112241-21a65-ce8e1967f306ad92b82dc9e482835ea5232287cc.gz [0a012c7 | Fri Jul 27 19:27:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fix typos in AuthHelper darcs-hash:20070727212735-cbc08-c7647b7dc5a669dd53c4a0867ae3514959b375d7.gz [1212130 | Fri Jul 27 19:06:00 UTC 2007] Aman Gupta <ramaze@tmm1.net> * Haml/Sass spec cleanup darcs-hash:20070727210626-a47f2-bb0c7ea347725d46f3eb45c103a635f4a377b3cf.gz [376632e | Fri Jul 27 02:42:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Documentation for mongrel/fcgi/cgi and sourcereload, reduces some overhead in the Cgi and Fcgi adapters. darcs-hash:20070727044223-cbc08-08191d6a485e2b2adabc4f452b08ae38e461a865.gz [4bd6e17 | Fri Jul 27 02:35:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update docs concerning FeedHelper and ReFeed. darcs-hash:20070727043526-cbc08-08185d0079e1f37d85967f7ef892d2baecaa7caf.gz [34cd7f7 | Fri Jul 27 02:28:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Change wiktacular so it uses layout instead of Page. darcs-hash:20070727042836-cbc08-104a34300e5e13290cd7f0c1c997623e7056d888.gz [e1ea5a4 | Fri Jul 27 02:26:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Put initial mapping into Controller::inherited so layout can work with it. Controller::startup is too late. Also introduces a change to delete any old mapping on usage of Controller::map. darcs-hash:20070727042608-cbc08-8af2675e2f52380eb55bdef76536f240d5cea347.gz [9fdf906 | Thu Jul 26 21:54:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add default content-type text/css for Sass and update specs for it darcs-hash:20070726235425-cbc08-2febf8565a4b10f3142f7aff529ce74f62e91f30.gz [de3b247 | Thu Jul 26 21:48:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add autoload for Sass darcs-hash:20070726234835-cbc08-a06b8dc7bd18db9aa05cd0b84fd412fc547756cb.gz [879a397 | Thu Jul 26 21:34:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fix typo in proto/template/index.xhtml darcs-hash:20070726233404-cbc08-57ffd18f51c1615848921f71f1b8472e25ba51e9.gz [135ceaa | Thu Jul 26 17:48:00 UTC 2007] Aman Gupta <ramaze@tmm1.net> * initial support for Sass CSS templates darcs-hash:20070726194823-a47f2-c9202b1804ea79fb88c54b85e4cc205c4499ed7e.gz [974a41e | Thu Jul 26 09:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Implementing layouts, view this patch to find out more as it also adds docs and specs darcs-hash:20070726114557-cbc08-4c9849c268c888b30dd26674bf526542af9b16dd.gz [702458f | Thu Jul 26 06:35:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Documentation for tool/localize darcs-hash:20070726083547-21a65-5e8ba6f8c413e9a870b67aa727ef246f885334ff.gz [c48fca2 | Thu Jul 26 08:09:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add another spec for Action() darcs-hash:20070726100958-cbc08-55e0879676ae549859d2701d667b8d5975501d48.gz [c964216 | Wed Jul 25 14:37:00 UTC 2007] comp.lang.zenix+ramaze <m.fellinger@gmail.com> * Added capitalization to Ramaze::Tool::Create output darcs-hash:20070725163717-206fc-09386e489404b5499da43893a3ab045ce6e85ba3.gz [5705e16 | Wed Jul 25 07:29:00 UTC 2007] comp.lang.zenix+ramaze <m.fellinger@gmail.com> * Updated user map information, added riffraff darcs-hash:20070725092941-206fc-aa36e326c6d4f4e89f4e91c77fab69ba01da9f43.gz [86c77cc | Wed Jul 25 04:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * minor beautification and docs for controller/resolve darcs-hash:20070725065141-cbc08-91e17b2d5bc2ab51f91c72a01ba63cd3baefced6.gz [850285a | Wed Jul 25 04:42:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix a end-space darcs-hash:20070725064251-cbc08-a6f473c21b84f972dbf300d0d89abec3c61b75c4.gz [2e2b51e | Wed Jul 25 04:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Further improvment on error-handling on exception during render darcs-hash:20070725064107-cbc08-3b40e273cc3f4c9cb8d33b7d0ae4c0eb9d6fd161.gz [210ddb6 | Wed Jul 25 05:15:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add tries to require rubygems darcs-hash:20070725071551-cbc08-b2ad42d7cc89d811c17a832933f092aaa91a2e13.gz [937c7b5 | Wed Jul 25 02:55:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix typo in bin/ramaze darcs-hash:20070725045521-cbc08-5b74800fd96a14ca447d7c3148d9f5843b4d9484.gz [740d422 | Tue Jul 24 09:47:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Documentation for Dispatcher, GlobalStruct, Dispatcher::Error, Tool::MIME, Response, Store::Default (adds some beautification in Dispatcher) darcs-hash:20070724114731-cbc08-38ec529359d312921b115c60eba60e780ac57cb4.gz [3665617 | Tue Jul 24 03:15:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * document AspectHelper and Syslog darcs-hash:20070724051536-cbc08-36cb997dc2afbf9679b3eb7a9499df833b153620.gz [7f3639c | Tue Jul 24 03:00:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * document some raketasks darcs-hash:20070724050058-cbc08-6af25e586ace3c3898fe631430c755b6da183e9c.gz [ed047b1 | Tue Jul 24 03:00:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * move error-message in sourcereload into the failed hook darcs-hash:20070724050030-cbc08-6e85a20436e64ff80dce1d61cf3a6c262b1ca83d.gz [32878d6 | Tue Jul 24 03:00:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * full docs for sourcereload darcs-hash:20070724050017-cbc08-3fa824e99ca35df6f328065df5d66f7c2024bbb5.gz [e645d87 | Tue Jul 24 02:59:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * docs for informer darcs-hash:20070724045957-cbc08-db82dbb73b9eba744db377d4b1ff09c5f32546d2.gz [e05d1a8 | Tue Jul 24 02:59:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * main.rb is now start.rb darcs-hash:20070724045915-cbc08-b8ef1686af0140002d7c04bcbaaf420ff85a3668.gz [64bc532 | Mon Jul 23 21:16:00 UTC 2007] Aman Gupta <ramaze@tmm1.net> * tmm1's location on the ramaze users map darcs-hash:20070723231625-a47f2-fa8b18ad56190767c37df1b62813004f1da3a8e6.gz [7738df8 | Mon Jul 23 14:48:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add placemark for zenix darcs-hash:20070723164824-cbc08-b3c30d1b9d217b55266724d2942b0cc32eb2d528.gz [ac194f1 | Mon Jul 23 14:30:00 UTC 2007] jesuswasramazing.10.pistos <m.fellinger@gmail.com> * Added Pistos avatar. darcs-hash:20070723163054-55b44-5844e3f13acda0a481519925e3c85e2680d6ce34.gz [2000bb9 | Mon Jul 23 14:03:00 UTC 2007] jesuswasramazing.10.pistos <m.fellinger@gmail.com> * Update of Pistos' description on Google Map. darcs-hash:20070723160354-55b44-ccea6492ac540c1070758f2bc2b14e70ddbf5521.gz [4e65645 | Mon Jul 23 14:03:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update users.kml darcs-hash:20070723160312-cbc08-993d0abdbdc0d6b0551d905ea20518cfdb3d1aae.gz [7be614a | Mon Jul 23 13:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add doc/meta/users.kml darcs-hash:20070723154603-cbc08-8ce641be45266ade03a10bfde2135ad4c5134dc8.gz [6c478ca | Sat Jul 21 16:24:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix abort for bin/ramaze darcs-hash:20070721182406-cbc08-499bdbcf9c9008a09bd2e6205fd99475296fedac.gz [ba4cb9d | Sat Jul 21 11:20:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add desc to release task darcs-hash:20070721132017-cbc08-0b12766ca005570b752cc4e14ff13f43d2e6074b.gz [ab6303a | Sat Jul 21 11:09:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update CHANGELOG and AUTHORS darcs-hash:20070721130912-cbc08-c317c8780eebeafb28e4db869413492cc369634e.gz [74e95fd | Sat Jul 21 11:04:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Version 0.1.3 darcs-hash:20070721130408-cbc08-dc48de44bb735192e89401595fa9bfddce9515ec.gz [16e64a5 | Sat Jul 21 11:03:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * some minor changes darcs-hash:20070721130312-cbc08-3f59b32abb256bb0e9fee737a11f1d45d6c53a9d.gz [9184680 | Sat Jul 21 11:02:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update announcement darcs-hash:20070721130259-cbc08-6a61d4976cdf841c536237c7b3018964cab97835.gz [03ef73f | Sat Jul 21 08:28:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Document a bunch of methods/classes/modules darcs-hash:20070721102805-cbc08-e84197989d1dca4b7413c5cddbf31281fc03a3c4.gz [23d5dcb | Sat Jul 21 08:00:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * rawiki is now wiktacular, fixed some bugs, added some features, HTML escapes fine now. darcs-hash:20070721100043-cbc08-ceb462ef9cc014d5fe98d394983ead3dc2966b2e.gz [46c1a42 | Fri Jul 20 03:54:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * documentation for dispatcher/error and the templating engines. darcs-hash:20070720055409-cbc08-04296169389a946fe4a32b28c0b6f78d0b05e046.gz [4dc5452 | Fri Jul 20 03:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Some more class/module docs. darcs-hash:20070720054608-cbc08-ce4449369bd0b728f7c937be9c37a16d14c7d4cb.gz [4dac633 | Fri Jul 20 03:33:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Documenting the inform/* informers. darcs-hash:20070720053344-cbc08-575d24b591965df03e02c5acc0ccf46a5e92583f.gz [0ccc303 | Fri Jul 20 10:53:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Add a spec for recent cache patch (namespaces for caches) darcs-hash:20070720125345-21a65-7247e7bd1aa36468e2f50428aeeaf37e1177305f.gz [d931a17 | Fri Jul 20 10:53:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * don't translate empty strings (localize) darcs-hash:20070720125332-21a65-9019d06e705c02015e67731458113f7e8c816f36.gz [613b487 | Fri Jul 20 10:52:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Allow <Page js='foo'> as well as <Page js="foo"> darcs-hash:20070720125252-21a65-5efebec01324d9432c16d5d440d7e5b7ffaff006.gz [63c552e | Fri Jul 20 10:51:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * small visual enhancement in resolve.rb darcs-hash:20070720125152-21a65-d95475d0ffc5640343ed8d61c0325ec6a7a68d43.gz [21cb5c3 | Fri Jul 20 10:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add rawiki example darcs-hash:20070720125021-cbc08-6d041c2c65636e512771f3e5ec1e155220443f23.gz [7c06a27 | Fri Jul 20 05:36:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Revise cache, add cache-name to key, remove method missing .[] .[]= .delete .clear .values_at These are now the only operations supported by Cache, if you need more, use the Cache#cache to get the underlying object. darcs-hash:20070720073609-21a65-d0b22afb56b5d42dbb0a57b625492566884e4dce.gz [ddc2524 | Thu Jul 19 16:06:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Fix blog example, link is removed in favour of A darcs-hash:20070719180618-21a65-8d7524afe60f852106af6253de42117fee3418a0.gz [eb07ac3 | Thu Jul 19 11:58:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Refining error-handling, now controllers are asked for a (also configurable) error-page if they have no action. darcs-hash:20070719135829-cbc08-40ae6b6c8325aee4dc4b8c64b86f156e6c9403cd.gz [70b64eb | Wed Jul 18 14:34:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Remove __ urls, saves us one iteration for each uri over 3 segments long :P darcs-hash:20070718163415-cbc08-f453b8c317b13b7b59f697c5f52e6f378a171339.gz [0e4e42a | Fri Jul 13 17:21:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * jQuery 1.1.3.1 darcs-hash:20070713192109-cbc08-7b74768265cc60ed51048134f7a015cbfb8bd985.gz [c5f75cf | Fri Jul 13 14:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Warn if no mappings are done. darcs-hash:20070713164645-cbc08-71456fdf59b8bb6eb55e6b4e0757bc1a9ce28bc4.gz [98fbfb6 | Fri Jul 13 14:24:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Alternative error-page if error-template missing and hint about clicking backtraces. darcs-hash:20070713162458-cbc08-9f60681d783c44beac9eb4ec82c89e7f954f216d.gz [8e3dee3 | Thu Jul 12 21:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Two minor fixes for proto darcs-hash:20070712234503-cbc08-da5aaaa362159259733ec2b7cc03cc05eb2fbea9.gz [a02ce51 | Thu Jul 12 09:22:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * bugfix, Inform not Informer darcs-hash:20070712112214-21a65-d7827e8d158a4e166b0ef20e066ab4bbf2f76abd.gz [3e77123 | Mon Jul 09 11:57:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Add a Controller.at(mapping) method to nicely get to a mapped controller when you only have a path. darcs-hash:20070709135717-21a65-aadee8b843cdd3a0e7b1ef772897c033794b44d4.gz [f217c33 | Wed Jul 11 21:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove the japanese COPYING, it's outdated and won't be read by anyone darcs-hash:20070711235123-cbc08-0ef890aeccd511003fbe3011625af678697f7ddc.gz [faf80f0 | Mon Jul 09 11:19:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Partial suddenly needs Request.current instead of request O.o darcs-hash:20070709131931-21a65-420740794d2e063dbb2384a50ef7cc3d81de0841.gz [43133ac | Mon Jul 09 11:14:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Scope for Elements is now the current controller This makes overriding of Elements easy. For example you have a top ::Page element and one in FooController::Page, the FooController::Page will be used when rendering actions from FooController and all other controllers will fall back to the default ::Page element. darcs-hash:20070709131456-21a65-1d39b39891b47a908c603f18e7786cb29242e608.gz [5553ee0 | Mon Jul 09 11:13:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Protect Aspects when called on a controller which doesn't have the aspect helper included darcs-hash:20070709131310-21a65-2b679f454c0018c1cb19b7e3e9aa8dcc58786cb7.gz [e6e40cc | Mon Jul 09 10:57:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * docfix, Base/IndexController don't get mapped to / anymore darcs-hash:20070709125730-21a65-796463807c06f765b210b0b794a0b021c38746bf.gz [a17568d | Wed Jul 04 06:57:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Sanitize Cache.resolved before blindly using what it gives us, better error-tolerance (for memcache as far as we know), oh, and removed some spaces at EOL darcs-hash:20070704085757-cbc08-002cc9820fa286be4bfd84fa576fe2036c9fc603.gz [3f21196 | Sat Jun 30 15:49:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Remove Global.public_proto, make sure you copy over the error.xhtml if you need it.. darcs-hash:20070630174944-cbc08-40518f1c9f7a3712130006032643df18a5f9da2d.gz [720753e | Fri Jun 29 06:56:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Add tool.rb to make autoload possible darcs-hash:20070629085651-21a65-26b2353e068aced0eec5ab73a629b1a869d94f51.gz [d8bc64d | Thu Jun 28 11:01:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Follow the .current scheme with errors too, Ramaze::Dispatcher::Error.current darcs-hash:20070628130139-21a65-768465123deea0f562d43047f000c643d9c6316d.gz [ed610c5 | Tue Jun 26 16:31:00 UTC 2007] Lars Olsson <lasso@lassoweb.se> * informer_log_levels This patch adds a "filter" to the Informer class which allows for better separation of logs. For instance, you could log debug information at standard output while having another Informer logging all errors to a file. darcs-hash:20070626183108-5f4f4-32ae2ff3691cbb6c0e2e460ad25895fd3a11115c.gz [986c8d1 | Wed Jun 27 12:36:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * migrate previous render_partial fix to post 0.1.2 darcs-hash:20070627143628-21a65-8a2dc16aa1200a4d2308ff70dddeed52d040e2d4.gz [b1a3247 | Tue Jun 26 11:49:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * use hash of SEEED for memcached namespace darcs-hash:20070626134909-21a65-c117eb2bc6190ec345a224782d7e28e0689077a8.gz [f8fa7b7 | Tue Jun 26 11:14:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * [Pager] Overlooked one link darcs-hash:20070626131418-21a65-9c088290869e0fdce3a90b9c6d01bee6db7586a7.gz [17a97b6 | Wed Jun 27 05:58:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * implementation and spec for LinkHelper#breadcrumbs darcs-hash:20070627075817-cbc08-9f7d09f5bc1f094b1b2a5bcec890def8cc242359.gz [2ba1ead | Sat Jun 23 19:49:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Remove eval in Pager, add new testcase darcs-hash:20070623214931-21a65-45a395f17ba5c44bfff421e74e088886dc464de3.gz [7ffbed6 | Thu Jun 21 12:05:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Fix render_parial transformer darcs-hash:20070621140529-21a65-6fd9c9d67773eb03c2336365b54b6456af3140ad.gz [48fd9ea | Thu Jun 21 11:28:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * fix up render_partial darcs-hash:20070621132832-21a65-94af4020f640565577660d2f4b71965d66957fc6.gz [368bad6 | Thu Jun 21 14:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Some code-beautification and complete docs for all files in this patch. darcs-hash:20070621164645-cbc08-5174063bce2aff8541295888a99178530542eabd.gz [d41238f | Thu Jun 21 14:34:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fixing parser of `rake undocumented` to recognize '=begin rdoc' as comment as well. darcs-hash:20070621163403-cbc08-fe3290d2436038366c6278fdac7021ed7f4f9a1e.gz [3ad07f4 | Fri Jun 22 04:40:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * don't make a new Struct for GlobalStruct, causes problems with reloading. darcs-hash:20070622064054-cbc08-4aef8ffd365a48693f04d514a5b2594bb1393234.gz [d47c856 | Thu Jun 21 12:04:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * fix Pager (0.1.2 migration leftover) darcs-hash:20070621140453-21a65-373ff81b774f8acb51898ba61f0dae0f3f36efea.gz [06379c1 | Thu Jun 21 05:55:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add Ramaze::SEEED which contains the file Ramaze.start was called from. Now used as key for memcached namespace. darcs-hash:20070621075542-cbc08-7e42150896b1feb5d30348a3a915c0b3cb26b12a.gz [2e740cb | Tue Jun 19 14:20:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update AUTHORS - welcome tmm1! :) darcs-hash:20070619162048-cbc08-6444c72f40158ec62b0537a0fa7c1dba9d880542.gz [3e62eda | Tue Jun 19 13:56:00 UTC 2007] Aman Gupta <ramaze@tmm1.net> * minor spec cleanups darcs-hash:20070619155641-a47f2-f12881d2537b3facf18c5ec1bacf0b86a3dfca88.gz [bdbb6fc | Tue Jun 19 03:23:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Describe the way of request/response in doc/meta/internals.txt (for rikur and all the other curious folks out there) darcs-hash:20070619052326-cbc08-1d38da33ba45b687e13c7a1ef212cb189b03bbf8.gz [4026797 | Tue Jun 19 04:13:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Documented some undocumented methods. (by Riku R[_\c3_][_\a4_]s[_\c3_][_\a4_]en <riku@helloit.fi>) darcs-hash:20070619061323-cbc08-2a25d0dd0d990e762e50f1e21afc26bc2925d2a4.gz [fe955f6 | Mon Jun 18 03:07:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Make dispatching continue after Dispatcher::Action fails, just return the last available error if all dispatchers fail. darcs-hash:20070618050735-cbc08-50c526fb000783673f97d009cafa5b5951c40ebc.gz [af4fcca | Mon Jun 18 13:05:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Global.public_root has precedence over Global.public_proto darcs-hash:20070618150558-cbc08-908ee4a55f95089214848f5ae055829d4ab18f50.gz [c30bf08 | Sat Jun 16 19:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update CHANGELOG darcs-hash:20070616215038-cbc08-03ced9cbb8ff1aa159f6866b66f6e464c70e5214.gz [336f3ad | Sat Jun 16 19:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Version 0.1.2 darcs-hash:20070616215008-cbc08-5f21dfd9ba5cacb0211de663c5dd8b4e52896e66.gz [ea8ae0a | Sat Jun 16 19:49:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update announcement darcs-hash:20070616214959-cbc08-66a5a1ed964ff9f9b384a0e2e661523b234368c4.gz [2af5311 | Sat Jun 16 19:49:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update AUTHORS darcs-hash:20070616214935-cbc08-c7cce17121f3261278b3e028b0d352134c7dccfe.gz [0ef28d2 | Fri Jun 15 04:13:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Revision of tutorial darcs-hash:20070615061317-cbc08-e960bb3fd58477a2591b4f26704de327e47974fc.gz [095e25e | Thu Jun 14 02:15:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Replace Action::fill by Action::create to avoid clash with our custom Struct::fill (eventually we should solve that otherwise) - also fix the problem that params were not unescaped properly darcs-hash:20070614041550-cbc08-2af7cef5b2a56c9e0ef30b5bf6b8ceabbb639cc4.gz [cdafd09 | Thu Jun 14 03:16:00 UTC 2007] comp.lang.zenix+ramaze <m.fellinger@gmail.com> * Added verbosity control to 'undocumented'. Run `rake undocumented-verbose' for the 'updated' version darcs-hash:20070614051616-206fc-0b86e1dddc6cf54440c7ade654e8f06fe6f987d2.gz [d21b905 | Thu Jun 14 03:13:00 UTC 2007] comp.lang.zenix+ramaze <m.fellinger@gmail.com> * Documentation of main.rb & ezamar.rb Rough documentation of lib/proto/src/controller/main.rb and lib/ramaze/template/ezamar.rb darcs-hash:20070614051328-206fc-888ca6b2db06097a7b6dc5742d78c3737f14a038.gz [c3c6f63 | Thu Jun 14 00:55:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add additional information about the colors for the `rake undocumented` task darcs-hash:20070614025528-cbc08-7a07797058576018bbf000e4809b702f767e80d7.gz [e4679e7 | Wed Jun 13 07:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add ramaze/inform/knotify over Inform::Knotify darcs-hash:20070613090851-cbc08-8e8573adbf3101f67a9ef68db40a08e3bc3a1b27.gz [2a6f3da | Wed Jun 13 09:52:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * total rewrite of the undocumented task, better matching using StringScanner and nicer output using colors. darcs-hash:20070613115226-cbc08-d95774db2977888d4f3afdd2837ac05b4b9de8ce.gz [b8cc53c | Wed Jun 13 08:53:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * docs for the templating-engines, Template, Session and Tidy darcs-hash:20070613105351-cbc08-d753d4e27c3ce19576cc24b9e61f1009e3d859fe.gz [2d48c4d | Wed Jun 13 08:35:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Add a couple of docs for Action and Dispatcher darcs-hash:20070613103539-cbc08-9d6e2f3905f00bd93067c2743b3461e29fe5ab44.gz [3c24889 | Wed Jun 13 02:42:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * experimental compiling of templates, don't use it yet unless you are in serious demand of large speed-increase for mostly static templates. darcs-hash:20070613044247-cbc08-b12f4dfb674a694f4ed34c076ec53f5eb7a59cbc.gz [5d9e574 | Wed Jun 13 02:32:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Xosd should be able to display multiple lines at once. darcs-hash:20070613043247-cbc08-8824b2f5018df8ff3739bcf7b28914837d1b4ac5.gz [e5074bb | Tue Jun 12 15:41:00 UTC 2007] Clive Crous <clive@crous.co.za> * Optional dynamic font size for XOSD darcs-hash:20070612174159-51e59-9cba18703bb95e3939bd8ca269eebdc51bda39a7.gz [bb9cbd1 | Mon Jun 11 09:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * simplify the template handling again, removing the (for now) unused Global.compile option darcs-hash:20070611110808-cbc08-af0903dd1d2b29e8eaa4df7e48255fb27f408937.gz [c9b5e8a | Mon Jun 11 09:00:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add a Cache::startup for bulk initialization, clear the Cache.compiled and Cache.resolved on SourceReloadHooks#after_safe_load_succeed darcs-hash:20070611110005-cbc08-3a33e5ad0d61d6b086a5fc6c2b1175ac559de919.gz [023ff9b | Mon Jun 11 08:37:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Improve performance by caching path lookups (need to add invalidation on SourceReload). darcs-hash:20070611103742-cbc08-ecbdbeac3f7f6f89e96999b03f6229f8461cd7d7.gz [2316a0a | Mon Jun 11 14:27:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * change @template_root of controller when not given darcs-hash:20070611162751-21a65-c1d073dfce448f7e420b4c6bf67add3d280af015.gz [98bdd30 | Sun Jun 10 21:35:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add the example i use to find memory-leaks, might be useful for someone. darcs-hash:20070610233512-cbc08-2f89d1f5777a3cabadc2057ade3ea4413b3fca5d.gz [badc1ba | Sun Jun 10 21:27:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fix memory-leak, Action should _never_ _ever_ use traits. darcs-hash:20070610232713-cbc08-3dbf8e0867522d31219e9dfad54497a2965c94fa.gz [253c953 | Sun Jun 10 20:54:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fixing Controller.current darcs-hash:20070610225405-cbc08-cac9a4573b4eaa279d6c486fdc71d811f52f8a7f.gz [36b3a8c | Sun Jun 10 13:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * round up last patch, adding some files i overlooked and removing deprecated ones. darcs-hash:20070610155119-cbc08-b5a4ef9cb894f368b9d2d82d91d5fefc3292be59.gz [53512f2 | Sun Jun 10 13:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Huge refactoring, making Action the central part for rendering. Please take a look at the changes until I can write some comprehensive summary (or wait with applying). darcs-hash:20070610154623-cbc08-eaf41a58c373b687f44a0c9fcbe091af36c79afd.gz [523eedc | Fri Jun 08 07:19:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Fix OpenID helper IdentityHelper darcs-hash:20070608091939-cbc08-c5995e3197246a301ed9186c3beff683283a720b.gz [0cae5f8 | Fri Jun 08 06:19:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Pager doesn't need Og anymore, small comment about exit! in adapter darcs-hash:20070608081943-21a65-b64c8c21265c18fce44321076b2e2baa20b4d688.gz [7268684 | Thu Jun 07 09:47:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * rather big change to Ezamar, fitting it to be able to compile before evaluation. darcs-hash:20070607114704-cbc08-11427b39ece02ff2ae7292ebcc7d732241cbdf84.gz [1756e26 | Thu Jun 07 09:16:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add usage of Global.compile for erubis darcs-hash:20070607111650-cbc08-b9ccb4f40f96b447b150e4d3f7f5c6b18713970e.gz [5786f39 | Thu Jun 07 09:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * use tested doc in Controller::render darcs-hash:20070607111402-cbc08-5e6fdd226ffa66aa8669d65613ae8c24542e181c.gz [6322266 | Thu Jun 07 02:44:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * get rid of a warning about undefined @files/@paths in sourereload darcs-hash:20070607044428-cbc08-d7a3a9d75270a16021a7217ecd2c8f36e9474de2.gz [1c75c9f | Thu Jun 07 02:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Introducing experimental cached compilation (for HAML so far, and not ready for production, just a prototype) turn on Global.compile at your own risk ;) darcs-hash:20070607044136-cbc08-7123f57e0314ab893d98076856bfacbdb6bbbce5.gz [9d97491 | Tue Jun 05 19:03:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * As expected, adding tests shows bugs :) darcs-hash:20070605210326-16231-2b4e8017793da0899da68bf78232ea498acbe5b0.gz [2d7f25c | Tue Jun 05 18:35:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * CGI.rb has extremely bad names. escape() does url_encode unescape does url_decode so renamed them to this. Also added html_escape and html_unescape and one-letter aliases h and u. This behaviour comes for free by including ERb::Util but I don't know if we want to load all that (I'd say yes). All tests still pass, so the test suite is incomplete. darcs-hash:20070605203514-16231-3bc4c0415fa26e05d11e04533d56c37b3eab001f.gz [41d15fd | Tue Jun 05 17:33:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * ramaze with no opts should return -1 darcs-hash:20070605193343-16231-71159b23a0a234e842f72991c2211ea958dda4db.gz [9d636c1 | Wed Jun 06 01:25:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * ENV SWIFT and EVENT now trigger require of swiftiplied or evented mongrel darcs-hash:20070606032545-cbc08-d9494572f5aef8c89357f81299c338711132306c.gz [bedda03 | Tue Jun 05 09:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fixing all those annoying spaces on empty lines and adapt the add-copyright task not to add one automatically but just notice. darcs-hash:20070605110856-cbc08-6e9affb32ea030d794efc8df909feca66636b8e1.gz [3bb25a1 | Tue Jun 05 08:58:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * mapping explanation in proto darcs-hash:20070605105858-16231-fa48555713f0a7239947a879a450c5851d699c7f.gz [b7f96ff | Tue Jun 05 08:56:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * first TestDoc task darcs-hash:20070605105608-cbc08-b154148cca0f9ef5069cf9240880da7f11609811.gz [537818c | Tue Jun 05 08:53:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix typo in LinkHelper doc darcs-hash:20070605105322-cbc08-2cc6c6f0f0ece7a13a07482333595e4fd8c4c56c.gz [b23ea96 | Tue Jun 05 08:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove Base and Index as default mappings to '/' darcs-hash:20070605105003-cbc08-1723701ccef9d9c5f1f9aa4e49510364a809b71c.gz [8154b11 | Tue Jun 05 07:49:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * proto enhancement * integrated action-method, template and Page element * added a template-less action * changed index so that it gives slightly nicer informations darcs-hash:20070605094901-16231-c96004e4e4311fe64f11ac789e052d5e160bd1da.gz [b956355 | Tue Jun 05 01:40:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update the authors task and doc/AUTHORS darcs-hash:20070605034048-cbc08-99ab40de8d4554bd1b5ba2899b9c92b09964d879.gz [32c78df | Tue Jun 05 01:31:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * little clarification of code in Controller::render darcs-hash:20070605033155-cbc08-ed96aa9879b6f84c08e72ea3ab02318d1fca72a9.gz [cba8744 | Tue Jun 05 01:30:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * extend PartialHelper with render_template darcs-hash:20070605033013-cbc08-20e8b63599b338b5d1938b1bdd650a87202d52df.gz [d51178c | Tue Jun 05 13:06:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * caching for our custom Request#params darcs-hash:20070605150620-cbc08-b5e57253a5e8cb7e41111ff939aec8fd56eab358.gz [0b26f96 | Mon Jun 04 12:18:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Add :collect trait to Localize, disable collecting for more speed darcs-hash:20070604141845-21a65-f965b3ad7135e3fa3a18d1d6e5741fb333aa8481.gz [29827d1 | Sun Jun 03 15:08:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * pager need og/collection to run darcs-hash:20070603170842-16231-b62673bcd83d51fcdd574d27a97c744a3b23c8db.gz [aa91730 | Sun Jun 03 14:51:00 UTC 2007] rff.rff <m.fellinger@gmail.com> * use HAsh#fetch when getting trait or default in render.rb darcs-hash:20070603165119-16231-f8eb950cd23b49fc7476054437e6b3defdcd40ed.gz [9c7e919 | Sun Jun 03 08:18:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Controller::cached? #=> Controller::should_cache? darcs-hash:20070603101809-cbc08-ff0e7d28fd7fa605968b6226d1564c6c8a4ab08d.gz [78e12b5 | Sun Jun 03 05:21:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove the mostly static trait :transform_pipeline in Ezamar with a constant, watch out since that may affect your code if you added custom transformers. darcs-hash:20070603072136-cbc08-49d49fbc922fcedd2000f3384bc2c58de38283de.gz [76b9c8b | Mon May 28 13:10:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add automatic require for win32console on windows (if installed) and sanitize @colorize/trait[:colorize] a bit darcs-hash:20070528151056-cbc08-dda0481fa58d9cc3eb0ff2c8451db4feda8439ef.gz [f70b6a2 | Sat Jun 02 16:44:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add docs for Controller::render darcs-hash:20070602184401-cbc08-a6ad953a8a6b3a935489bcd9f4579639dd75f605.gz [63b3a24 | Sat Jun 02 16:38:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Controller::render gets a default empty array for params and params are each called .to_s upon to make escaping possible and unify the effects of calling internal against being called external. darcs-hash:20070602183802-cbc08-e96671af9041a04243d7bc158077cdbb0514a7ae.gz [73de442 | Sat Jun 02 06:58:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Add render partial implementation + specs darcs-hash:20070602085828-21a65-ecaa16bbffa412b2fd124d8aea27268e45d46705.gz [628cade | Fri Jun 01 03:42:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * constantize a couple of traits in Dispatcher, Dispatcher.trait[:handle_error] is now Dispatcher::Error::HANDLE_ERROR, Dispatcher::Action.trait[:filter] is now Dispatcher::Action::FILTER, sanitize error spec and add some docs. darcs-hash:20070601054206-cbc08-4ef28e5b2c4cd312117eb5eb64bb2f35fb303dee.gz [1b9e38c | Fri Jun 01 05:31:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Common error classes, tiny change to Global, StackHelper expects url instead of using R() itself darcs-hash:20070601073118-21a65-c7b5c15ecdd65aa5bbae1a89596efd438c028da8.gz [7ac6e5e | Thu May 31 09:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * some santizing and docs for Session. darcs-hash:20070531115106-cbc08-4265f93e881919a44b2658c7fe27b8cdfa8bb241.gz [dd16017 | Thu May 31 09:29:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * speed up path resolution a little bit by directly instantinating Action darcs-hash:20070531112914-cbc08-dfd51a5be0d277fa7bb33e8fe6d5791f85b652c5.gz [5d8d569 | Thu May 31 07:12:00 UTC 2007] Martin Hilbig blueonyx@dev-area.net <> * fixing link building of the whywiki example darcs-hash:20070531091245-b4a7e-fa9f034c2fb5046bade51a08a217f9c0b9cc1cd2.gz [8173959 | Thu May 31 01:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * document Informing and add some minor speed increase (increase will be smaller than most loggers would take to actual output) darcs-hash:20070531034608-cbc08-2f571361ecd1cc4c32de6b5c442ac722246f36ba.gz [f781b1b | Thu May 31 01:21:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * DRY up template.rb and add some docs darcs-hash:20070531032129-cbc08-17b6d7c481f1dcdf05717f5f285569c953e6b5f8.gz [932cf0b | Wed May 30 10:19:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * docs for Action darcs-hash:20070530121906-cbc08-5c2e55e64717b3e2f310427c7dad2203cf3f12e0.gz [f19ea9e | Wed May 30 10:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * a couple of docs for Controller darcs-hash:20070530121441-cbc08-d6e8c3ce9bad6402bb360bc56e200e662c411693.gz [627cc29 | Wed May 30 06:37:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * make the life for people who want to run specs without RUBYOPT easier darcs-hash:20070530083719-cbc08-cf3e8228bdbaa0a20424aa4f9fde30fa0d095808.gz [8087596 | Wed May 30 03:00:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * small update to the FAQ darcs-hash:20070530050031-cbc08-fb0eaded673f8a6bb914f26010bb5c9a213c8037.gz [0b4e021 | Wed May 30 02:54:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add a Inform.ignored_tags so you can skip tags like :debug easily darcs-hash:20070530045400-cbc08-8f520d1d1edade96312013150dd06111718a1e25.gz [393e03b | Wed May 30 02:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * split up SourceReloadHooks::after_safe_load into after_safe_load_failed and after_safe_load_succeed, you get additionally the error-object on failure (also fix the s/save/safe typo) darcs-hash:20070530045149-cbc08-55503c3c0849aa103cae989418ce4689b39c76dd.gz [e743d1f | Wed May 30 02:42:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * put the hooks into their own module SourceReloadHooks darcs-hash:20070530044241-cbc08-4c19dea3002c812d872446db1b1fb11b765666bf.gz [d4e210f | Tue May 29 10:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * another wrapper, this time around save_load, with file and status for after darcs-hash:20070529125103-cbc08-0b6ba7668d8334c069da5cd753af72963250a5ae.gz [df38d16 | Tue May 29 10:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * SourceReload#before_reload/after_reload method stubs, to be filled by YOU :) darcs-hash:20070529124135-cbc08-991b072eccca22cf08a0f345bea972cfd8d97ac8.gz [3199829 | Tue May 29 06:49:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Controller.trait[:template_extensions] is now Controller:TEMPLATE_ENGINES and retains order of your engines as you require them, you can also change it afterwards easily (wasn't possible with the Hash we used before) darcs-hash:20070529084946-cbc08-6a413d6aa2790ef5d1292077867b188495179425.gz [c2ea895 | Tue May 29 05:13:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * flatten atoms for R() darcs-hash:20070529071331-cbc08-c6e0c47c7998341221d88d13badb733e71f6724b.gz [4d94d7e | Tue May 29 05:10:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix LinkHelper to use Controller.current instead of self darcs-hash:20070529071051-cbc08-a7230679e0d34be0f8dc6d7537c18fdee798fff8.gz [9405702 | Mon May 28 12:18:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fixing memcached for multithreading darcs-hash:20070528141851-cbc08-a9ca0c118117a83f1e644067ab0a50d66bce387b.gz [6b4fb35 | Mon May 28 11:02:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Global.public_root went Global.public_proto and Controller.public_root went Global.public_root darcs-hash:20070528130202-cbc08-799397872832cb0291ca184618bd1a0509d0476c.gz [0e0356e | Mon May 28 11:01:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * typo in LinkHelper docs darcs-hash:20070528130105-cbc08-6b3e248b29ae493323d505e3a9293c1887289468.gz [73caeb3 | Mon May 28 09:39:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Add PagerHelper (port from Nitro) darcs-hash:20070528113953-21a65-0d39b206b1c80eaf9f0485b1c329b9baac939433.gz [e0b9673 | Mon May 28 00:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add a release task darcs-hash:20070528021404-cbc08-642249790a7aa341b3a0aefb15785c77d71b51a0.gz [52aebec | Sat May 26 18:47:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update CHANGELOG darcs-hash:20070526204722-cbc08-36a7e8213ab752cf207caf9e6c2e3288d3dd8377.gz [30b95b8 | Sat May 26 18:47:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Version 0.1.1 darcs-hash:20070526204701-cbc08-ec90a311b0d77fa8862d8b7c400e021f61a870c0.gz [9b656b6 | Sat May 26 18:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update todlist.html darcs-hash:20070526204510-cbc08-13aa2e850c753c1fd4b51c46fd94caf4e400b9e2.gz [b89f068 | Sat May 26 18:37:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * rdocs for LinkHelper darcs-hash:20070526203725-cbc08-128974d3226638b84cbe828f9177b466009f349c.gz [738e490 | Sat May 26 18:21:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * rewrite of LinkHelper, link() is gone, use A() instead, will add some rdocs on usage. darcs-hash:20070526202142-cbc08-f96a4b52335d746c9e0d955a3ebca8c39c2ce9a0.gz [339dbaf | Sat May 26 13:39:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * synchronize tutorial html-version darcs-hash:20070526153920-cbc08-f5805fd47cd4b53cc4cb6b4d4e0fef9ea25c7a20.gz [df3e282 | Sat May 26 13:38:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * another update of tutorial darcs-hash:20070526153845-cbc08-123205980d7a8af7839c1d613c04fa9843b6a9df.gz [6ae42e6 | Sat May 26 10:35:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix the precendence of startup-options: bin/ramaze > Ramaze.start > Global.option darcs-hash:20070526123509-cbc08-76a284ac38f7e88f88213888586e3df29985417e.gz [180a47f | Sat May 26 12:52:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * some fixes to the tutorial darcs-hash:20070526145237-cbc08-a9067d4bbe9f8186ec3b682a57245fc2f0513330.gz [fc2493e | Fri May 25 09:39:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * rake rdoc should generate the readme darcs-hash:20070525113954-cbc08-92e8454c8c9f8d41ea5a0af7c867c1decb1ec4ea.gz [f972139 | Fri May 25 09:38:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add some docs, update announcement and README darcs-hash:20070525113859-cbc08-7e2f2301ca59ac43397e83fab2315f0861b38f2a.gz [af4d683 | Fri May 25 18:59:00 UTC 2007] clive <m.fellinger@gmail.com> * Correct a minor typo/spelling error in shutdown message darcs-hash:20070525205926-c370f-bab0d87505f99837e20b26c9d21dd647539dc5ec.gz [b654eb0 | Fri May 25 15:18:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * params assigned to Action should be unescaped automatically darcs-hash:20070525171838-cbc08-44460ff4180266e879a1456b77d4d9453f416295.gz [971e7a1 | Thu May 24 14:46:00 UTC 2007] clive <m.fellinger@gmail.com> * Cleanup some Remarkably requires darcs-hash:20070524164651-c370f-4f8a05c0611989d094f528e8943692b6eab17ef9.gz [51e5c29 | Thu May 24 14:24:00 UTC 2007] clive <m.fellinger@gmail.com> * "Update Remarkably usage for Remarkably-0.5.0" darcs-hash:20070524162423-c370f-20e6508d61f2a247b66313b661183d63efd3c1b3.gz [f5495ad | Thu May 24 13:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * make the template+arbitary-params fail (i.e. make the spec pass) darcs-hash:20070524151458-cbc08-b6b0ac3928379424fd181bf0f2f9cb48e164b4d3.gz [182dd82 | Thu May 24 12:35:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Spec for templates accepting arbitrary parameters (failing for now) darcs-hash:20070524143528-21a65-5d9ff17c5c38eb8404b1d4ba5232cb9e9df16a3e.gz [f04eeb7 | Thu May 24 11:16:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * this is a patch with rather large impact. I rewrote the whole aspect-business to get a much cleaner solution, aspects are now simple blocks and the hooks have been integrated in Controller (don't do anything by default, so unless you use AspectHelper the impact is near zero). Also removed the various monkeypatches of Method and Kernel#method since we don't use them anyway. updated tutorial and specs. darcs-hash:20070524131625-cbc08-6ecf717ad83573f25b9fbcf3b3419b1614365b42.gz [aba0ded | Thu May 24 09:56:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * extend the specs for the todolist example to match the current status darcs-hash:20070524115653-cbc08-00dfaac5a5502af161fbc0959fed67f9c1bbd82e.gz [1a3d765 | Thu May 24 09:56:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * tutorial should have a list instead of a simple <br /> separated linklist darcs-hash:20070524115620-cbc08-796562f740e3e0be3ff939eb7d0480b5dae5c930.gz [1378366 | Thu May 24 09:56:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove some wrong docs darcs-hash:20070524115609-cbc08-8794cf7144b82615b25b24fddbba986c08cfd244.gz [4defc81 | Thu May 24 09:55:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * adds the CgiHelper and extens the default helpers by :flash and :cgi darcs-hash:20070524115520-cbc08-7fa12a54a42b6fed19b7fd6da19b2adf1284a695.gz [040d3bc | Thu May 24 09:54:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * automatically unescape params in Action.params when they are set darcs-hash:20070524115437-cbc08-ccfdb11e86c0c001eb4975c8f541c2d8540c3e6b.gz [9a16b1b | Thu May 24 09:54:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update doc/tutorial/todolist.* darcs-hash:20070524115414-cbc08-9b2a7cd81e091fb278afdab683c992ed70981a7c.gz [a5dd50f | Thu May 24 09:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * last step improving todolist example darcs-hash:20070524114129-cbc08-a3a307b65f776f3d2454879b088a55c03b3d9a64.gz [feeec13 | Thu May 24 09:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * first fix for todolist example darcs-hash:20070524111438-cbc08-d2aa618acc7830983e8caffcd7f12b413b434604.gz [086f81e | Thu May 24 08:13:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * some small fixes for todolist.mkd darcs-hash:20070524101334-cbc08-65bc35fbfccb71caed14d18b31eaa43221ea0c30.gz [0ae0533 | Thu May 24 06:00:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * move doc/tutorial/todolist.txt to .mkd so i can finally have automatic synatx in vim :) darcs-hash:20070524080039-cbc08-812bd673b52fd9ea60b59159183bd1339c204ea9.gz [02ebd7f | Thu May 24 03:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix AspectHelper, it had errors with negative arity darcs-hash:20070524054550-cbc08-9cd6f8d690ec589b188d8d1176e56a1758043dc0.gz [19c407f | Thu May 24 03:43:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add support for cookies and referrer to MockHTTP darcs-hash:20070524054339-cbc08-7d3463d30ed1343e7e0135fc922af1c36175b31e.gz [49b14cb | Thu May 24 03:25:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add some docs for our override of Request#params darcs-hash:20070524052508-cbc08-463b03cd82c7f179f05b91a88383ced4d5e739d5.gz [0179165 | Tue May 22 22:06:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * clean up the todolist example a bit darcs-hash:20070523000623-cbc08-c212b54c07e9d11be81ff8e0b8c433603a597934.gz [5bbb63a | Tue May 22 21:23:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * some fixes to get rid of rdoc warnings darcs-hash:20070522232315-cbc08-cf514a985f7e8045eebda6327b98cd6cebc84ca8.gz [6e16e81 | Tue May 22 11:52:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * this is the last stage of the templating-refactor. darcs-hash:20070522135226-cbc08-35f8fde1a5fcce7c2e8597dcab7032b42e9ebfe3.gz [6f5d97a | Tue May 22 10:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * improve Ramaze::Cache a bit, adding method_missing so you can use the advanced features of your cache darcs-hash:20070522124517-cbc08-20a6061ed6ec8c805c45613aa777cd16e409f95e.gz [9d98684 | Tue May 22 10:44:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * speed up element spec darcs-hash:20070522124440-cbc08-be2c894e9d3a8ebd07f8762a053eb6b27da8746c.gz [53232de | Tue May 22 10:17:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * speed up template spec darcs-hash:20070522121723-cbc08-0af391bb14876efed49d8f28a597b9beb614086f.gz [dc9a86d | Tue May 22 10:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * speed up controller spec darcs-hash:20070522121414-cbc08-6c8332c364d268ca05c95b27a872b3a27a75574c.gz [088bb62 | Tue May 22 10:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * speed up params spec darcs-hash:20070522121402-cbc08-369971bbb3bf018eb5822554b8f363c38486c350.gz [e219ca1 | Tue May 22 07:04:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * finally fix the localize spec, properly darcs-hash:20070522090414-cbc08-69bb05c462b39b27310885873ad1dd8da3476e5d.gz [a8071d7 | Tue May 22 06:34:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * speed up the examples/chaching spec darcs-hash:20070522083429-cbc08-9d7d3640fcd027cd86367cb8373f52dcce134a88.gz [3e68de8 | Tue May 22 06:22:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * This removes Ezamar::Morpher from the templating-pipeline of Ezamar, if you don't know what Morpher is, ignore this :) [yay, another speedup] darcs-hash:20070522082227-cbc08-e25a1b9f0ecf3cbf8db21f5a839d428067b2ec07.gz [8d11c25 | Tue May 22 04:16:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix serious memory-leak, yeah, it's sessions and traits again... darcs-hash:20070522061629-cbc08-9009498e8d7db3c2bf664666635fdf53459a001d.gz [eeaf070 | Tue May 22 04:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * make Ezamar even faster darcs-hash:20070522061438-cbc08-94c631dfab623ad7659c8610d4635591f5a20d65.gz [c1e26fb | Mon May 21 20:10:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove usage of mongrel-adapter from the controller spec darcs-hash:20070521221000-cbc08-05da68d0fb369fe6d1c5feed8f51c76876d8d6c2.gz [2ac87f9 | Mon May 21 20:05:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove snippets/rdoc/usage_no_exit, it's not needed with the new bin/ramaze darcs-hash:20070521220549-cbc08-fe1c8b8da802a25dd2dca147e4b9143c9e92172f.gz [3a26248 | Mon May 21 20:03:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add Struct#values_at darcs-hash:20070521220315-cbc08-e5e8ba5d96098e99fe8929e631404c9249625d2e.gz [fa22438 | Mon May 21 13:52:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * and finally, the little big templating-refactor, passing the real action rather than an hash to the transform-method of the engine. The most impact has the change of @action in a controller to the real action rather than a (propably wrong) action-name and that Ezamar pipeline specifies a nested array of class and method to call on the class. darcs-hash:20070521155228-cbc08-78732ad6d750c15f47ae8f55087f2791e7f041f3.gz [8a3b136 | Mon May 21 13:01:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * unify all examples for templates, preparation for big templating-refactor darcs-hash:20070521150117-cbc08-59700a2ff75c3db80428b91775007c509e3bd421.gz [c5aca10 | Mon May 21 09:31:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove the dusty, old, deprecated, unneeded and nasty yaml files from proto, this time for real. darcs-hash:20070521113141-cbc08-4c52a9279668a05139ffe62e7193393e641bdce1.gz [4dde785 | Mon May 21 09:25:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * minor fix for bin/ramaze darcs-hash:20070521112535-cbc08-c7c9b4e2c2ac86159fa235ad44d2d2dab8367657.gz [1e06709 | Mon May 21 09:19:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * yet another fix for bin/ramaze darcs-hash:20070521111946-cbc08-999de89bab5e76afdffb0f46e752115a64bee59a.gz [4ef9453 | Mon May 21 09:15:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * no bulky RAMZE_BASE in the bin/ramaze anymore, just require ramaze darcs-hash:20070521111504-cbc08-fd482ee25c0e0e8d5eb6dd295ca99e6c91075605.gz [405343d | Mon May 21 07:02:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add check for defined?(Action) darcs-hash:20070521090214-cbc08-9112ff8354008cbd24c677ba8ac21835d4a50117.gz [f03f738 | Mon May 21 09:10:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fixing some typos in tutorial darcs-hash:20070521111034-cbc08-865e8d36ce9214d8150a9529ff4245bbadf17731.gz [e25aa55 | Mon May 21 03:11:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * use the new functionality of Cache all over Ramaze, makes a ton of trait lookups unnessecary and the total caches available in a single place. darcs-hash:20070521051120-cbc08-6f423ab0ba01d24e63d759bde7219cc62af0b441.gz [fac1bbe | Mon May 21 03:07:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * make Cache Enumerable, add #each, #has_key? and ::add to add new global caches that are easily accessable darcs-hash:20070521050734-cbc08-55aecb5126a66e98d6db305295348cc8555e030f.gz [896c922 | Mon May 21 06:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix Dispatcher::File and add spec for missing response-code due to an evil mix of racks status-code hash and rubys nil.to_i => 0 darcs-hash:20070521084543-cbc08-d1b0b8dafd78cab6685bcb9e6bf2d45852148451.gz [37ab4b6 | Sun May 20 11:23:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix localize spec darcs-hash:20070520132342-cbc08-af3763ce2ddd7dae4ae8da71eb99c0cbf735df5d.gz [2c86742 | Sun May 20 05:13:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add the tutorial task for rake darcs-hash:20070520071347-cbc08-20419be2840f35614e046e44d2255d7c7af3ed03.gz [e6cdb1f | Sun May 20 05:13:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add some (c) for the controller split darcs-hash:20070520071333-cbc08-10dac603fa22885dbdecd5f5044a6214c99b94de.gz [9285eea | Sun May 20 05:13:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * tutorial/todolist.html has a neat little menu with ToC now darcs-hash:20070520071317-cbc08-fef22e19f607fbcaac0726fafb63c7821b269bee.gz [4e7d1ed | Sun May 20 05:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update of tutorial/todolist darcs-hash:20070520070855-cbc08-7af93f8aa1be111e595d45a231ddd48e09527a49.gz [35fbc58 | Sun May 20 05:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * a little cleanup for bin/ramaze darcs-hash:20070520070846-cbc08-adbd5adfc37cdf291ae5673b49938c065a40ee02.gz [cd165ab | Sat May 19 16:10:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * don't create a new instance of the adapter for every request, we use singleton-methods only - may improve performance :) darcs-hash:20070519181019-cbc08-c387b7c11241c8faeb772129cba860aae82407ea.gz [7fb60e6 | Sat May 19 16:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * improve examples/hello darcs-hash:20070519180858-cbc08-fa262c9fb89f9b20e10c47e00293e245d94f5623.gz [d02fb54 | Sat May 19 16:06:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * documentation for ramaze/adapter/base.rb darcs-hash:20070519180600-cbc08-17c80550424b47c64846092cf27b40d1fd38dacf.gz [13bcbea | Sat May 19 14:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * document ramaze/action.rb and ramaze/adapter.rb darcs-hash:20070519164533-cbc08-a16633843dfbe934ba4463c87b58bb1fe62ce3f8.gz [0e149ad | Sat May 19 14:34:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * document lib/ramaze.rb darcs-hash:20070519163448-cbc08-0595941b841d074ba09d93f13948fb3bd21cc3c0.gz [b3370ae | Sat May 19 14:29:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update the meta-doc for configuration darcs-hash:20070519162948-cbc08-31c035b744bd8e4ddddcf34a31b79d96dd12b4d1.gz [3684dcd | Sat May 19 14:15:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add a chapter about configuration to the tutorial darcs-hash:20070519161506-cbc08-8778e452eaa427f873b4b4bdb8f4de111c970f28.gz [8e3be1f | Sat May 19 14:13:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add some cleanup to the cache specs darcs-hash:20070519161338-cbc08-71be8b351d80d3f25e434577416080a5f91e0f36.gz [01be818 | Sat May 19 14:11:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * split up Controller and move the parts in the ramaze/controller directory darcs-hash:20070519161158-cbc08-65d3038baf8cde8d167ff42e91c60c3b9d776733.gz [ca1eca0 | Sat May 19 08:42:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * additional fix to bin/ramaze, it didn't work with '-a m' to select adapters. darcs-hash:20070519104224-cbc08-0d00422595a200e83e24bb83e96040d04de22aa4.gz [f85fb47 | Sat May 19 07:26:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Ramaze doesn't extend itself anymore, so you have to explicitly write 'Ramaze.start' instead of 'include Ramaze; start' - is that good? darcs-hash:20070519092649-cbc08-bf3d287693841d8f5597c787cebe6043f4b5783f.gz [3d6c7cc | Sat May 19 07:17:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * minor update for tutorial darcs-hash:20070519091713-cbc08-0f23f45a762f55b5d25a9b6ffbc0b019a9bfbab7.gz [f9e20ea | Sat May 19 07:16:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * a couple of additional requires for socket and yaml, mongrel and webrick. fixing a small bug that arose when we switched to ThreadGroup. darcs-hash:20070519091608-cbc08-a8c6145d598a3304b04f96ea0a4bc1b00728f62c.gz [c0b46e9 | Fri May 18 16:47:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add MemCache#clear and fix SourceReload for files from ./ darcs-hash:20070518184708-cbc08-5a3950112e73ae2bcd9db26358c649ef7bde4a27.gz [601474e | Fri May 18 12:29:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * improve output of SpecWrap a little bit for the controller spec (the one with 125 specs) darcs-hash:20070518142937-cbc08-143fd4d546a42f34b3528bfd16ea94ff5243fe12.gz [8692e31 | Fri May 18 12:10:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * a couple of changes for adapter, better usage of Adapter::Base, moving it into ramaze/adapter/base, got rid of racks trap in a rather clean way and change Global.adapters from Set to ThreadGroup which gives us as well easier and cleaner control. darcs-hash:20070518141010-cbc08-a930933a4b20db6d286de9681dc071bacce8c21c.gz [7a40f2c | Fri May 18 11:43:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix lib/proto as well darcs-hash:20070518134337-cbc08-cae9922749cb561b9fba76ac735152a999fc7f50.gz [71acc9b | Fri May 18 11:40:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix examples/todolist and add a quite good spec for it darcs-hash:20070518134042-cbc08-d458dba53bd64173f89f7dd945a1a03986b3e24f.gz [faaeb72 | Fri May 18 10:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add to Global.origin darcs-hash:20070518124148-cbc08-a0e7a90b78786adf6bbee77d50d71ade63ba1da6.gz [e54f80f | Fri May 18 10:40:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove the old /conf files from proto and example/todolist darcs-hash:20070518124050-cbc08-6386a3c95a8c2299cc669f837861fef0584bda05.gz [b53013d | Fri May 18 10:36:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * we ain't got no modes anymore darcs-hash:20070518123649-cbc08-742fa3d28224b2bb0326b662ae5f12fb3f346b99.gz [0fce199 | Fri May 18 10:29:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix bin/ramaze --create darcs-hash:20070518122916-cbc08-a7bd7cd51a9ee025fe215be0d76d3ff231dbada7.gz [39f3491 | Fri May 18 10:21:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * require rack/handler/mongrel instead of mongrel directly darcs-hash:20070518122129-cbc08-322f96519eb54c57b60c4acb5295c9a8e671d683.gz [dddfe32 | Fri May 18 09:28:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fixing random vanishing of template_extensions darcs-hash:20070518112855-cbc08-b76555dbeefe5c797a5819339f9104f2300bc8ca.gz [5ab6bd2 | Fri May 18 09:20:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * spec and corresponding fix for the "i've got an empty hash in my request.params['foo']" problem darcs-hash:20070518112022-cbc08-0cef148adc15e328362ca89e338f295d7b4b813d.gz [109d240 | Fri May 18 08:49:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * switch trait _template to Controller::template darcs-hash:20070518104959-cbc08-5d1241d40058ba4d4a02a144ec199b0eca7d94ed.gz [2df8b4a | Fri May 18 07:25:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove an added path that was only useful for me darcs-hash:20070518092536-cbc08-4aea31ee308cee7f9af3550bb8074836263822ca.gz [d4003bb | Fri May 18 07:23:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * SourceReload just got a lot mightier. darcs-hash:20070518092340-cbc08-ec3adc33596d1856bc8ec3dbc9eb47ae05de2339.gz [566b527 | Fri May 18 03:48:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * split up global.rb into global.rb global/dsl.rb and global/globalstruct.rb - introducing the clean GlobalDSL :) darcs-hash:20070518054826-cbc08-964665e1571e36144bba3286b0ea58a8de0b6757.gz [2b9ce82 | Fri May 18 03:22:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove some of the to_sym usage and the Hash#keys_to_sym(!) from snippets. One spot still left, but we need a wrapper for it first. darcs-hash:20070518052250-cbc08-c8756c9263d443c0f553e8bdd111c20fc415b7ad.gz [ff0525d | Thu May 17 11:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * due to the annoying trap of rack we'll define a new trap every second now, gotta fix that later on, but continuations and trap are two nasty beasts... maybe we should patch rack for this somehow (chris2 won't - asked already). darcs-hash:20070517134620-cbc08-57a0592131b63f32a3e756ac490951bc28e8d6ff.gz [2d066f3 | Thu May 17 11:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove some cruft from bin/ramaze darcs-hash:20070517134609-cbc08-0ce5e15cd01de8117e387c5abdee97aa64c6140f.gz [9f11f44 | Thu May 17 11:40:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Total rewrite of bin/ramaze based on optparse, which turns out to be nearly perfect for our usecase. Try it, read it, be astonished! (the DSL in Global finally is put to use now as well) darcs-hash:20070517134003-cbc08-e7607e3012fa09415d53cd15b9ded70a38e474a7.gz [4dab8c7 | Thu May 17 09:04:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update the announcement.txt to keep track of features - we'll just add them here and remove what is not important or accurate prior to the next public release on 0.1.2 darcs-hash:20070517110403-cbc08-92d3da464eb6f3a23a62a6b8c75bb7a8b0fc4e80.gz [342dcd9 | Thu May 17 08:53:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add Ramaze::Record to easily record requests made that fit a particular pattern. darcs-hash:20070517105351-cbc08-81abe41af04c3dd7d30afc57de939e7ad467f55e.gz [c29294f | Thu May 17 06:20:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fixing the trait _template spec and implementation to avoid recursion darcs-hash:20070517082033-cbc08-650e2a7303d7e1c69b402ad9259d924a21649634.gz [f589500 | Thu May 17 05:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * various fixes to Cache and adding spec for the new layout of it. darcs-hash:20070517075049-cbc08-743afc27bfd2275b6be6aa3beac225fb40bc29e2.gz [bc4fe7b | Wed May 16 14:40:00 UTC 2007] clive <m.fellinger@gmail.com> * Change the Remarkably Template usage to cater for Remarkably version 0.4.0 and higher darcs-hash:20070516164022-c370f-66ba93646dd85c400b1c00e6db0d71f8ff2f0c14.gz [5ef1f9c | Wed May 16 14:29:00 UTC 2007] clive <m.fellinger@gmail.com> * Remove an accidentally added piece of debug code. darcs-hash:20070516162919-c370f-a608ac1cdd54ff479bf36ef40b5c8b097c87f574.gz [28790dc | Wed May 16 13:22:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Add small spec for template resolving of traits darcs-hash:20070516152239-21a65-2d5a3ad3ae56da927838eddaf317eda1a5479687.gz [ff989d7 | Tue May 15 06:42:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Remove yaml files for localizations darcs-hash:20070515084206-21a65-1d73abf3921a044b451c5559ba208f2408038fcf.gz [b83d021 | Wed May 16 12:49:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add migration info for patch 1111 darcs-hash:20070516144920-cbc08-18fd1941e04e63834a2dc5b99af3c5742304252e.gz [eaf362e | Wed May 16 11:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * first attempt at a DSL for Global + docs + CLI darcs-hash:20070516135043-cbc08-5d19996ce56de56b03852c97a21130580d398760.gz [7c963fc | Wed May 16 11:44:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * minor fixes darcs-hash:20070516134443-cbc08-1e62ce5047e097c387f8e2be76f860be27cd1eee.gz [d7abc3c | Tue May 15 07:35:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add testcase_requires for the templating examples darcs-hash:20070515093506-cbc08-40c518e31dfae3fdb7d214d265bf11ab5e71f293.gz [264e0f7 | Wed May 16 09:47:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * H.U.G.E. refactoring of the core of Ramaze, beware! don't try this at work! will assemble a change-guide tonight. darcs-hash:20070516114711-cbc08-3b74fc5e5c3be3f25d4a36b598aae26082c00781.gz [66b113b | Tue May 15 06:40:00 UTC 2007] clive <m.fellinger@gmail.com> * Add Remarkably templates darcs-hash:20070515084005-c370f-005120d547da753461939df5ee853bae2cfaa992.gz [a0654ab | Mon May 14 11:58:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * make the error.zmr a lot simpler, remove the logo, don't use CodeRay and use ENV['EDITOR'] instead of vim (if set) - also some improvments to the stylesheet regarding the <pre> tags darcs-hash:20070514135840-cbc08-99df2494396e2010af94def20e93e7f68454964f.gz [210fbc1 | Mon May 14 11:36:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove the post-clean tasks for specs, they are never run since darcs relies on exit-status and so SpecWrap exits before they can be done darcs-hash:20070514133606-cbc08-3059d3cce30d64bffdc5274ee2e544d61faa490c.gz [96ed390 | Mon May 14 11:33:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix the :force_setup setting and rename it to :origin, it was only used in this way in spec/ramaze/helper/form and with the new spec-system this is not needed anymore, gives us nicer handling of CLI/app/spec options darcs-hash:20070514133308-cbc08-94df467f110d12c227e183408568fa720034e5a1.gz [fd26838 | Mon May 14 11:18:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * restructure spec tasks, check `rake -T` for the new tasks darcs-hash:20070514131847-cbc08-0faeb3ac5bd98bcaadfd6adb333a4d4db1d83704.gz [2d0d1c7 | Mon May 14 11:06:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove spec/ramaze/dependencies - it's not exactly helpful anymore darcs-hash:20070514130607-cbc08-8d150d83bb7b2cd141d8cdd4f11269f791967c41.gz [a4faa32 | Mon May 14 09:27:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * some small fixes darcs-hash:20070514112746-cbc08-69c900757f73d2a1803b254d3cf4e91dc1f2f337.gz [892b543 | Mon May 14 08:57:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * don't base SourceReload on a sleep of @interval/files.size, rather sleep fixed @interval (which is now by default 1) darcs-hash:20070514105746-cbc08-877cba8757531197fce216100b1f1baa476f2fa1.gz [2740c9a | Mon May 14 07:26:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix SourceReload darcs-hash:20070514092621-cbc08-794b1b4593d08a449da3bc120318379c7d4773c6.gz [0d3f7eb | Mon May 14 01:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Global.shield - a security-net for the Dispatcher to respond fast to repeated errors without first going down the controller (rendering the error-page still takes ages) darcs-hash:20070514034141-cbc08-923ad831ae063d77a0de1493bfe4add8132641eb.gz [8fdedd1 | Sat May 12 12:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * move Action out of Controller into ramaze/action.rb darcs-hash:20070512141421-cbc08-75c62098256ac450aea26b3a72db8b4c368ea989.gz [06cc076 | Mon May 14 06:11:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix for the params-fix darcs-hash:20070514081148-cbc08-2550b98109fec1eefb0132f59da2f2283fc96cf0.gz [a32592f | Mon May 14 05:12:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add fix for paramix if Og is used darcs-hash:20070514071251-cbc08-7ea73d6bc5c17f6a7691432ea49657e12f49a9ac.gz [ef07b8d | Sat May 12 11:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * introducing SourceReload instead of old autoreload darcs-hash:20070512134131-cbc08-381c0ffc966e63355a21ba5aa581b970e9a0c9a4.gz [c5a318b | Fri May 11 18:00:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Make Analogger trait-configurable again Makes it play better together with LogHub darcs-hash:20070511200032-21a65-4c8c8988c2c5e542a50a5fc4bc8bd866e434659d.gz [9d609af | Fri May 11 10:12:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Update CHANGELOG darcs-hash:20070511121213-cbc08-eee688ed5cfbfe92913e42284b752118fb167ca5.gz [0390a54 | Fri May 11 10:11:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Version 0.1.0 darcs-hash:20070511121152-cbc08-2d1f751e4acc49117d60b58612745a59be8123e6.gz [8d0d9f2 | Fri May 11 10:10:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix localize spec darcs-hash:20070511121034-cbc08-db7986a45d1443d317bc6b28e938bb073483279a.gz [aeed0f5 | Fri May 11 09:55:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update README with latest chunks darcs-hash:20070511115521-cbc08-5d3507bf496acc68a7f7cbc01d4ef59e37d78866.gz [52d25cc | Fri May 11 09:52:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * some patches to the rake-stuff, BASEDIR was messed up and some other things were outdated darcs-hash:20070511115209-cbc08-d8aca0b809ab75d5c7f82f275f5493c6e28f8a31.gz [d6e067f | Fri May 11 09:42:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove Tidy and Localize form the Action pipeline (fix the spec and remove some spaces) darcs-hash:20070511114246-cbc08-4bc87966440a260f92ed7771f1344c633bb87463.gz [3ffb2a2 | Fri May 11 09:30:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Update localization tool darcs-hash:20070511113011-21a65-816d2660e537ff838509e20b79fda823a9413b34.gz [a63c4d6 | Fri May 11 08:20:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * a couple of updates for the readme_chunks darcs-hash:20070511102047-cbc08-f922f78ad5fa165496edd90b6965a45e43957d6e.gz [0982a90 | Fri May 11 06:12:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * move bl_Og to blog darcs-hash:20070511081223-cbc08-86fd2bd1f3c1538359449d1014ada7a0769c26d2.gz [0c1e808 | Fri May 11 05:10:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove the old blog example darcs-hash:20070511071044-cbc08-24ff10fdd0e482e3c76c5730c0b66aa4590bad1e.gz [c00194c | Fri May 11 05:01:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix a couple of bugs that the new controller stirred up, private methods are now really no actions anymore, fixing auth-helper and aspect-helper to respect that. darcs-hash:20070511070105-cbc08-e4e4a71542fbff15c667d2ee649c41e2375a78d4.gz [07c1ab6 | Fri May 11 04:25:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * update announcement darcs-hash:20070511062550-cbc08-3e369fdf5d86e2e863009e614275db22bc726f2f.gz [edf4df2 | Thu May 10 14:35:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove some spelling-mistakes in announcement darcs-hash:20070510163501-cbc08-31e61b6c2ba98c1b865f5bc460559bd4c084dbf8.gz [8680065 | Thu May 10 03:47:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * don't use an additional .reverse for the session-key darcs-hash:20070510054725-cbc08-f0836c4fdb222f79c524b3324eb12e6656b86607.gz [bba217f | Thu May 10 03:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * Informer again, flush the output if possible, that makes it possible to tail -f if you pipe to a logfile darcs-hash:20070510054539-cbc08-225e703924108b1f05ae6f24b24c823e450e0a4b.gz [32d00db | Thu May 10 03:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * check for .tty? when deciding whether we should colorize or not. darcs-hash:20070510054110-cbc08-1c3b34a6f7201af1af9f386471fd85cadc2bd3df.gz [bcd3a1d | Thu May 10 03:30:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * intelligent logging of errors in Dispatcher::Error, omitting repeated backtraces darcs-hash:20070510053034-cbc08-f25e0cf6395bfca4bad883c34a1591999f7c3a5e.gz [421ef2b | Wed May 09 08:53:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Change Rs() to use Controller.current instead of self darcs-hash:20070509105318-21a65-d85b29e68e7a3aec0c597ee14ee019c425f6d754.gz [8b234b6 | Wed May 09 08:42:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add Controller::current and an experimental spec of how to do render_partial darcs-hash:20070509104254-40155-c9e5a4085b1c0ff5356d7f75f45c38cf0dd5ac54.gz [cdc6f50 | Wed May 09 08:31:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fixing Controller::template_paths and Controller::resolve_template darcs-hash:20070509103136-cbc08-6368c60b8db5086ed05806a354bcbae7cd8f76d8.gz [8070cdf | Wed May 09 07:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * tons of small fixes and improvments, Inform.debug won't inspect anymore if it's already a string, proper error-handling with sweet 500's for the templating and specific 404s for not found controller or action, improved caching in Controller, fixed some bugs in the AspectHelper, fixed the cache-example spec, activated the error-specs again, added some (c), gave the Action Struct a nicer look..... darcs-hash:20070509095050-cbc08-b6f3fee43d8c4448a402134e0a46e0329fc71885.gz [cd78069 | Wed May 09 03:26:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add and use snippets/struct/fill darcs-hash:20070509052604-cbc08-997d05a885c3fe71967ea6a5cfe4151deb76b04d.gz [e1fd51d | Wed May 09 03:01:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * improve pattern_cache for Controller darcs-hash:20070509050152-cbc08-75255fc602e45b44c02b3658ef378116594bc6e6.gz [da3e9a3 | Wed May 09 02:16:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * make the caching spec a bit more robust darcs-hash:20070509041620-cbc08-eb157a5f3a82f2389e3b0387cdf2f77977a9a84c.gz [d7d13e1 | Wed May 09 01:59:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fixing some weirdness and verbosity darcs-hash:20070509035948-cbc08-8774c31b73b209e422f0c743e32c4fa72a20fef7.gz [a6501c2 | Wed May 09 01:53:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * disable two specs so we pass all specs - these are about error-handling but right now it's not clear what the distinction between 404 and 500 is anymore. darcs-hash:20070509035315-cbc08-f293041002f1ce6d8fa14393cd3b1506be4ce42b.gz [9acad1b | Wed May 09 01:52:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * some minor changes darcs-hash:20070509035220-cbc08-f8df3a2eba7c50231f810401052542ff1bd56075.gz [921d7d0 | Wed May 09 01:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * big extension of spec/ramaze/controller darcs-hash:20070509035111-cbc08-f230d0e2eea41a960d38195105e545b7b6f56e64.gz [2141bc3 | Wed May 09 01:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add ramaze/controller to the spec layout again darcs-hash:20070509035051-cbc08-d17b21b207d61954ffa334812564da385af49a04.gz [9d2fa96 | Wed May 09 01:50:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fixing some spaces darcs-hash:20070509035013-cbc08-5030c61c5b029f7ba30d67814f0393db45ce6eb8.gz [3697220 | Wed May 09 01:49:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * include the spec dir to the fix-end-spaces task darcs-hash:20070509034953-cbc08-3d225f10908d7012c96c3dfff57e1a6fea7b26f5.gz [85fc2fa | Wed May 09 01:48:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix/extend the template_resolving spec darcs-hash:20070509034817-cbc08-d85ee1679f0a25c3507e0b79ebe03f1550c6fd29.gz [12cbe06 | Wed May 09 01:47:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add some modules to ignore as actions in the spec/helper setup darcs-hash:20070509034732-cbc08-6973f63fbe820569167f3e85fd78af848198bba3.gz [3b5d602 | Wed May 09 01:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix template/ezamar file-lookup is done for it, no need to do it again darcs-hash:20070509034638-cbc08-336ebcb1caa5d4cf0d534ec26c461571402f77c3.gz [72fc73c | Wed May 09 01:46:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix helper/aspect for the new Controller darcs-hash:20070509034624-cbc08-d83858fe8f579df4229cfb02c071e09e93abb425.gz [d39f069 | Wed May 09 01:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * better handling of Dispatcher::File - we should cache the lookup-paths darcs-hash:20070509034540-cbc08-407d2974a4b071c0004f900fd3e898daeeb908c4.gz [1c41425 | Wed May 09 01:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * let the Dispatcher::Error respect Global.error_page darcs-hash:20070509034522-cbc08-abe864e95f300663fe1eb152d6e645a3f8c53309.gz [d96f738 | Wed May 09 01:44:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * 90% rewrite of controller/action/template lookup in Controller darcs-hash:20070509034447-cbc08-402266b76c8b02e882ac4218ea1cf30a820b82d9.gz [b6638e7 | Wed May 09 01:43:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * move Global.controllers setup into the DEFAULT of Global darcs-hash:20070509034316-cbc08-f760c27afe9b1e9080ca302cc5b8680361860c9a.gz [c0e01c2 | Wed May 09 01:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add the Action Struct, nothing fancy but it should act from now on as container for actions ramaze-wide, most likely we'll extend it with binding and optional controller, it only propagates inside controller.rb and helper/aspect.rb atm darcs-hash:20070509034128-cbc08-e383dda591fe6cf08c20e351ba12004dc969d42a.gz [cbcae05 | Wed May 09 01:41:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove the proto/public/404.jpg we cannot distribute something that doesn't belong to us. darcs-hash:20070509034117-cbc08-25a952848e721069f446cc4547abaaefffcb0f1e.gz [54b7c65 | Tue May 08 08:31:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Add 'template resolving' controller spec darcs-hash:20070508103116-21a65-9d5037b77ed0c1f6be01c9fb400a90612db5c086.gz [ae5e9dd | Tue May 08 05:14:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add workaround if we run specs and don't want their modules in our controller darcs-hash:20070508071400-cbc08-35001ab5fad656096c39c41163399fe69b0a24c7.gz [88bac5d | Tue May 08 05:00:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * some small updates on the previous patch darcs-hash:20070508070058-40155-8b04a608514ce13fe7739d23d7390723881bdf1d.gz [1ca0985 | Mon May 07 15:46:00 UTC 2007] clive <m.fellinger@gmail.com> * Add a few specs for the base ramaze template class darcs-hash:20070507174600-c370f-5f9182f7367fb9bf29bb30cbb21d195ddfa3b655.gz [62b3181 | Sun May 06 08:08:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * doc and typo in bl_Og/main.rb darcs-hash:20070506100846-cbc08-6044b9c23a3575e0b9724a33513ef53a702eecbd.gz [e7de061 | Sat May 05 21:32:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * huge patch consisting of 171 hunks that provide huge improvments both to ramazes core and the whole spec-system, which is now mock-based darcs-hash:20070505233256-cbc08-51667640b9fdb05469928eb55ac26c0ff1f85934.gz [020b1fd | Sat May 05 21:22:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fixing the template_root for the example templates darcs-hash:20070505232237-cbc08-06aaa248f9c76201b1321fd25564ddd75358cef4.gz [763acce | Sat May 05 18:24:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * make some helper-methods private darcs-hash:20070505202414-cbc08-658f3b6a3f0f221cb7fd464b55c77edfec5fab1a.gz [2532bd3 | Sat May 05 17:56:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * make bin/ramaze compatible to ruby1.9 darcs-hash:20070505195606-40155-919c51db7011d2c022fdd9241ce70b6a4609d34c.gz [ebfa210 | Sat May 05 07:26:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * clean files of the SpecLayout in a seperate step darcs-hash:20070505092631-cbc08-80fe601cc8bcd396379670309157fc811bcb98cb.gz [6a5ea01 | Fri May 04 14:14:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add example/bl_Og from entropy darcs-hash:20070504161401-40155-a5e39f3b409087fe018633e67385d1772297ff17.gz [52da8ca | Fri May 04 10:02:00 UTC 2007] clive <m.fellinger@gmail.com> * Add a spec for testing Markaby links darcs-hash:20070504120241-c370f-1c3288d443ea146163b03570e64fe850b6b4bbb7.gz [4f803dd | Fri May 04 09:40:00 UTC 2007] clive <m.fellinger@gmail.com> * Add my surname darcs-hash:20070504114031-c370f-7d850cf0409e3b1dc0a8cdfd07666e9d97cd3d0b.gz [e5328b4 | Fri May 04 06:04:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * improving performance in controller lookup darcs-hash:20070504080416-40155-1282a1c1029a61b0756f6bcb7206fefa894db62b.gz [219ae6c | Fri May 04 04:40:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove special handling of action 'error', it's not needed anymore darcs-hash:20070504064002-40155-16eebfcec826e1513769fde90519007985c0aad1.gz [53ea9ec | Thu May 03 17:37:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * split up the Rakefile and put parts into rake_tasks darcs-hash:20070503193711-cbc08-b64b659e9e0b847fb954b60d208a6789c826371b.gz [97e5282 | Thu May 03 17:25:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add the rake authors task that generates the doc/AUTHORS darcs-hash:20070503192546-cbc08-29a11b9c93deffc1bd05cfe2d17209e33c00b74d.gz [487e77a | Thu May 03 16:53:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * add the template specs to the default specs darcs-hash:20070503185306-cbc08-138a44b446a01884caeffbebe17245bbbeb180b8.gz [6d48cf4 | Thu May 03 16:51:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * get rid of the failures we sometimes get for webrick by explicit require darcs-hash:20070503185136-cbc08-cfd523fa4185ced9c78dc9e0bd6bb9141e749175.gz [b20d262 | Thu May 03 16:48:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fixing extensions lookup order, it doesn't allow much modification yet, but should work for most common cases darcs-hash:20070503184800-cbc08-13e26944b60ce783bfc148cba2700d310ccedc93.gz [058f3b3 | Thu May 03 16:45:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * fix the markaby example, 'this' should be a symbol darcs-hash:20070503184510-cbc08-c8c07c40af945c6925e10eb9a4fc92fba88f1fbb.gz [e4f2cbc | Thu May 03 16:42:00 UTC 2007] Michael Fellinger <m.fellinger@gmail.com> * remove the old template from the haml-example darcs-hash:20070503184247-cbc08-a15b3b344eec58c686a76ba28858af37f4442082.gz [59601cf | Thu May 03 15:47:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update dependencies, rspec now 0.9.1 darcs-hash:20070503174719-40155-c377afea700ac3a36ee2a11173cdbf419f64a9e1.gz [6515199 | Thu May 03 15:38:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing the template examples and add specs darcs-hash:20070503173825-40155-5c02b40835e6a945f97b1d1de2dba536c710600a.gz [e14cdd0 | Thu May 03 14:18:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove old stuff from Template::Markaby darcs-hash:20070503161850-40155-414b00630484e049db7ef6271a20b85dfabcd7e0.gz [1e9a1ff | Thu May 03 14:14:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing instances-variable passing for markaby darcs-hash:20070503161452-40155-4e50cbb4778dc5fc8f8ea495955317c1f6f3db65.gz [9bf3de3 | Thu May 03 14:01:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove some of the debugging-code from markaby darcs-hash:20070503160129-40155-0bfc5d2849001f00a02aff985ae83b47b112dfdf.gz [9a9122c | Thu May 03 13:57:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fix automapping darcs-hash:20070503155701-40155-c878cb223a4de8ad2ab39191d27c8b7bddc79f98.gz [3a58985 | Wed May 02 04:09:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update proto configs darcs-hash:20070502060942-40155-13835d071feb573c5fa98a88a8fedb8f9debba0a.gz [b30356c | Wed May 02 14:56:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing the markaby example darcs-hash:20070502165624-40155-d980704923c0697e4c70c7081d1c0bac7e14572c.gz [4127fd6 | Tue May 01 09:16:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update spec/dependencies to include syntax darcs-hash:20070501111637-40155-76bfd121580fd3baa13b3b09bc500ed4cdef3459.gz [3e7fbad | Tue May 01 09:14:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * exit specs if rspec is < 0.9.0 darcs-hash:20070501111447-40155-390903b365cfb000a7b10a4686a0bb38632f1963.gz [73cc0b9 | Tue May 01 09:01:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add spec/helper/layout and use it in spec/all - this is hopefully the last in a series of refactorings for the spec-framework darcs-hash:20070501110150-40155-d75d953b9a247da95dbc24dcc280c19ff0c29d2b.gz [d5e0af9 | Tue May 01 09:00:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add spec for inform/informer and inform/syslog darcs-hash:20070501110017-40155-319350241e8beaa5f27f8db28baaa64d3af8c410.gz [4dbbaf2 | Tue May 01 07:36:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update dependency-versions for gemspec darcs-hash:20070501093610-40155-8745dad5902d7b60687a1bd7eb30fd342bba23dd.gz [eceaaba | Tue May 01 06:55:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * convert specs from 0.8.x to 0.9 darcs-hash:20070501085555-40155-21089ecea88fd2c1919225b01c905315b7705c7c.gz [4a03c27 | Tue May 01 06:25:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update global.rb for ruby1.9 darcs-hash:20070501082533-40155-725f0bee50dbcd964c856668e026fe9038bc17da.gz [7e6da8b | Tue May 01 05:09:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update spec/all into a less hackish and easier configurable design, running all specs including examples darcs-hash:20070501070900-40155-e6f5faef0f966d19da76b965800565b115b11673.gz [4a817d1 | Tue May 01 03:56:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add helpers to spec/all darcs-hash:20070501055639-40155-e104e24df197f9e47bbdc68b19ff9166afff604f.gz [01479f7 | Tue May 01 03:05:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add spec for FileHelper darcs-hash:20070501050524-40155-cd0f62d614a9692c5aadffcafed6ae60c862bc13.gz [35099d4 | Tue May 01 03:04:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add (c) to FileHelper darcs-hash:20070501050437-40155-cece607298bffc9d679210df5b85e2ff85c27fdb.gz [991dc4e | Tue May 01 03:03:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * updating Rakefile to add a newline after (c) darcs-hash:20070501050339-40155-e9cce691e377280c44de3083f5de5403aec8c0ca.gz [3968b3f | Tue May 01 02:57:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding specs for a couple of the simple examples darcs-hash:20070501045714-40155-b9d1d691d348b23fb3077b825774647a3ab3f91a.gz [ca4e22a | Mon Apr 30 14:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding FileHelper, no specs for it yet but added it to default-helpers darcs-hash:20070430160656-40155-5984193cc923b7d7a375591840bdb7a00a16ea46.gz [b7cdb4b | Mon Apr 30 14:05:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add Controller::map to make the 'trait :map => "/foo"' nicer, use it like: 'map "/foo", "/bar"' darcs-hash:20070430160505-40155-65c9cfc136329f1513df305ed1458ad33320c90f.gz [a172054 | Mon Apr 30 14:02:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding some startup-information about controllers darcs-hash:20070430160250-40155-f166fb556558f842fce9e8fcaaef4a6fd03ca92d.gz [5e7f9b2 | Sun Apr 29 11:31:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * small fixes to loggers darcs-hash:20070429133116-21a65-a712f9e0b9789e1a1b807289c5175ead6fb10e27.gz [1f3caab | Sun Apr 29 08:38:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add the missing helper/markaby darcs-hash:20070429103815-40155-9eb172cb4696a9943c446b8c7b797c7ec457a1a4.gz [eb29e3e | Sun Apr 29 08:36:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * minor rewrite of Template::Markaby and its spec darcs-hash:20070429103658-40155-56387bd226937838d3797d6f28f8b2d32bb08ae4.gz [2fd3973 | Sun Apr 29 08:35:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * some modifications to make LinkHelper work with markaby, it's a bit ugly right now... darcs-hash:20070429103537-40155-b25c6bc465334b8edc7b1eacbf2c07a37e6cc62a.gz [32df796 | Sun Apr 29 08:33:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * this improves the template-lookup and general performance of Controller, file-templates can now be handled by different engines based on the extension, if unknown or method-only the trait takes over. also replacing some ancestral_traits with more specific versiosn of class_trait/trait darcs-hash:20070429103321-40155-a7cdfd9f3e626eea87b8b120ac8281f933edce5c.gz [dfef296 | Sun Apr 29 08:32:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * improving example for markaby a bit, it's not working yet though, have to talk with the markaby-folks darcs-hash:20070429103208-40155-c0e7e24d0474167de9e339957c8f1ad23f99decd.gz [38a8097 | Sun Apr 29 07:49:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing some (c)s darcs-hash:20070429094911-40155-f70d5adb58c25385f1d3c17d2ee9ee01e3396523.gz [9319b7c | Fri Apr 27 06:10:00 UTC 2007] clive <m.fellinger@gmail.com> * use '--partial' for darcs get darcs-hash:20070427081042-c370f-bd8880c29b019b48978bcdcb55bec0aee56caa30.gz [fd5207d | Fri Apr 27 15:33:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * putting Ramaze::Inform assignment into Global.setup again darcs-hash:20070427173331-40155-fb128833db88184c5854deac445807d464ebe85c.gz [91c8489 | Fri Apr 27 11:14:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * move checking for automap into Controller darcs-hash:20070427131418-40155-7866cf0f2c1cc9b1a9db0a8006d96102b98df41f.gz [6807949 | Fri Apr 27 11:12:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * huge refactoring of logging, this needs extensive review darcs-hash:20070427131224-40155-dfa0bb43b4ae6b98a8e93bb28446313ae9d099c1.gz [dcd119e | Fri Apr 27 10:51:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add map for examples/hello as well darcs-hash:20070427125138-40155-2cda96d6a48fda92174621eb442c432653e8f629.gz [d5c030b | Fri Apr 27 10:49:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing examples/element - we need mappings now darcs-hash:20070427124949-40155-2c9ad030e9fc9f53f027c8ded822fed278805a6c.gz [24bd3c1 | Fri Apr 27 10:48:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing a non-critical behaviour where Ezamar would throw an error if it cannot find a template but an action is there. darcs-hash:20070427124822-40155-5ff1db606768456a6c7d30cf3b9cbb3f78a81ef5.gz [c497589 | Fri Apr 27 09:35:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding Object#class_trait for better lookup of traits defined in the class of the current instance darcs-hash:20070427113537-40155-f0352409d50788ac8113cd4ae5296c41c06a161a.gz [245ee39 | Thu Apr 26 11:55:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * rewrite of notification_hub and xosd darcs-hash:20070426135524-40155-b0b792e7673f60a68c7e2fc7cada442e8998b978.gz [0625241 | Thu Apr 26 10:35:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * removing the spaces that kashia introduced so nice in the last patch darcs-hash:20070426123536-40155-5b05d7f335f70d9b7a772a6784de38f3cef8abb5.gz [f1e6a95 | Thu Apr 26 10:28:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Add NotificationHub, Growl, Xosd Loggers This is a preliminary patch, especially the Xosd is not tested. darcs-hash:20070426122834-21a65-b498bd8f067ab3b58473bafb6a32e129facd2fe1.gz [32ac3a4 | Tue Apr 24 21:30:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * better report about errors in the ezamar pipeline, please note that the browser will still show 'no such action', but the console will inform you about all real errors (this has to improve further) darcs-hash:20070424233056-40155-ea24f864f17f2a468df7fb9cbd9fd2f3ee854ff4.gz [881de73 | Tue Apr 24 21:29:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * little change in blog example darcs-hash:20070424232935-40155-c25db93d2de90280fddd478e7ec417d82f4b0664.gz [119dab2 | Tue Apr 24 12:54:00 UTC 2007] clive <m.fellinger@gmail.com> * Add a response message for deleting "no such entry" in the blog example darcs-hash:20070424145429-c370f-ff9d8b5218ab8d7673a680b4fcfba1d20596aed4.gz [f0fff53 | Tue Apr 24 12:38:00 UTC 2007] clive <m.fellinger@gmail.com> * session result message is by id instead of class in the blog example, and disappears after 1.5 seconds darcs-hash:20070424143854-c370f-3f32331e555f2dac7f249f6931664d0c67bc56d0.gz [160a7b4 | Tue Apr 24 11:41:00 UTC 2007] clive <m.fellinger@gmail.com> * emphasise titles displayed within results for the blog example darcs-hash:20070424134105-c370f-5ef950293fecd0da59cbec599627b3e496009ca3.gz [92080ff | Tue Apr 24 11:29:00 UTC 2007] clive <m.fellinger@gmail.com> * Show session result if applicable darcs-hash:20070424132956-c370f-a99cb018c77b1a2919205510f77ce79b2ff13638.gz [37dff5e | Tue Apr 24 10:57:00 UTC 2007] clive <m.fellinger@gmail.com> * Replace all references to oid with eid in the blog example. darcs-hash:20070424125733-c370f-0da36eb899b1bbdd20fe875cc983228a32884bbc.gz [4d34ef0 | Tue Apr 24 14:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * limit sessions to 1000 per IP, also makes inspecting ObjectSpace easier darcs-hash:20070424162300-40155-d1bc85a5590c9f63c097b4a54dd98185b46151df.gz [8d1bb8c | Mon Apr 23 20:55:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add Global.test_connections to switch testing connections via TCPSocket on startup. darcs-hash:20070423225508-40155-a17f326b0385d8651c89b9a57561af8ae052cd25.gz [d51369b | Sun Apr 22 14:24:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * replace some stuff in spec for CacheHelper to be more readable darcs-hash:20070422162447-40155-ded68077216c9890da3c84e96cb31533fc0453ed.gz [5d1c232 | Sun Apr 22 14:07:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * s/Context/Browser/ for specs, Context could be confused with the meaning of context of RSpec. darcs-hash:20070422160705-40155-b05fd0d9fd9292fe7462b0656f6d379f99423841.gz [53b90e2 | Sun Apr 22 13:51:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add doc/meta/announcement.txt as a template for announcements - would be thankful for reviews and corrections. darcs-hash:20070422155146-40155-8515103aa2f5ad4594a8addb5c001549c5c420f0.gz [b9514de | Sun Apr 22 10:28:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * move configuration/internals from doc/readme_chunks to doc/meta darcs-hash:20070422122852-40155-dec4e208227e8a220234b21cc764d25dac48ac9f.gz [2d22ecb | Thu Apr 19 02:26:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * move out SpecWrap to spec/helper/wrap and add a little fix to commonize darcs-hash:20070419042626-40155-ae4d5c61fdd58141520f19cae21bc23cfd92e03d.gz [1b234b5 | Thu Apr 19 06:45:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing tutorial and examples/element darcs-hash:20070419084508-40155-8f3541a54d9d69e26dfba1817100db39a5920737.gz [17b1efd | Thu Apr 19 06:40:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * Element doesn't use @hash anymore, instead the keys are set to instance-variables directly, please take car, this causes breakage darcs-hash:20070419084019-40155-031e10dafc920ac0ace1120241c8f4749b43668c.gz [b981d0f | Wed Apr 18 07:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * total restructure of spec darcs-hash:20070418090657-40155-b581377ab4c69b241f7a5c0cff6b6d898fdcdc49.gz [e8b9be4 | Tue Apr 17 11:05:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove the rescue Object from tool/localize darcs-hash:20070417130501-40155-5c8e383b2bd0c7db05bf77ddc02848d291f40919.gz [0301346 | Tue Apr 17 11:03:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * rename Global.inform to Global.informer to respect what class it is pointing to darcs-hash:20070417130340-40155-dd9b986439ffdf3691e6f2a6f63b07d5cf78e188.gz [14cd617 | Tue Apr 17 11:00:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add backtrace to Informer#error again darcs-hash:20070417130030-40155-d4dbb92008d44833797bf9d0d488b729079ade99.gz [5635813 | Tue Apr 17 10:56:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding readme_chunks/internals.txt darcs-hash:20070417125604-40155-001ecb98d3ccad7683a915ea0b18e33f3b9b68a6.gz [7ffc458 | Tue Apr 17 03:54:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update configuration.txt and remove useless :cache_actions from Global darcs-hash:20070417055401-40155-155160b9c47ba03cdfd1366ce054299dd32f626e.gz [ac70253 | Mon Apr 16 12:05:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add doc/readme_chunks/configuration.txt - just a first draft and to be completed darcs-hash:20070416140503-40155-12f56ba89013dd5bf778eeb921141e312b548b32.gz [82b8f1f | Mon Apr 16 12:03:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding implementation and specs for tool/localize (we _need_ docs for that) darcs-hash:20070416140312-40155-7b0313efc0a97fae60908de9cd0e23930a71dc6e.gz [bf1f626 | Mon Apr 16 12:01:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * a couple of fixes and adding missing stuff to Global darcs-hash:20070416140115-40155-2334da64e64f5c74b530185eaeb6d43ae72207f6.gz [1cd293a | Sun Apr 15 09:01:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Logger fixes darcs-hash:20070415110150-21a65-fc0ddc6865742206a4500b86b3aa60d0a8210ee8.gz [b542817 | Sat Apr 14 20:07:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * define $context_runner darcs-hash:20070414220727-40155-a961a2d978623943eaac3c5431e05cc4cb35c408.gz [227599e | Sat Apr 14 20:05:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * getting rid of warnings in SimpleHTTP darcs-hash:20070414220555-40155-078ac40922b9ce25437144ef0a642dae425c9e42.gz [8d7f26a | Sat Apr 14 20:02:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * don't define #get twice in the spec requester darcs-hash:20070414220223-40155-6479974c5d6a456b17e4443f070fa8c75865272c.gz [3ef3471 | Sat Apr 14 20:00:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * get rid of the warning about redefinition of aquire darcs-hash:20070414220052-40155-79a73f4972caf591a6cbbc635cac6b9c75c8993e.gz [a53ebd6 | Sat Apr 14 19:59:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * get rid of the redefinition of #each... do an actual check first (for 1.9) darcs-hash:20070414215947-40155-8bc7b2fe5cf406ea1c5c9d15f36bed4404155cf8.gz [47f7862 | Sat Apr 14 19:56:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * huge refactoring of the Inform system for better configurability, this changes lots of small things in lots of places, but nothing too invasive darcs-hash:20070414215652-40155-996856efca247550714ed0aa06619f8e46d961f7.gz [9948c97 | Sat Apr 14 19:55:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adapt error.zmr to new inform system darcs-hash:20070414215528-40155-1ec1635f42166326f9e2cc2b96e445d5909701fb.gz [299915c | Thu Apr 12 23:57:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add support for nested params darcs-hash:20070413015734-40155-ad7c04f4611906e2df360874ab7cf7aeb2b3995c.gz [d0a557a | Thu Apr 12 23:43:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * pass $: as -I over in spec_all darcs-hash:20070413014326-40155-a180a32f90ea755ec8aed092201aff36584978b9.gz [66b62b1 | Thu Apr 12 23:40:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * GlobalInformer Inform in the og-gulper darcs-hash:20070413014059-40155-b35b3871167af9105d7f6e2c04fa9abdf339d88e.gz [96876ff | Mon Apr 09 07:33:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add systemu to optional dependencies darcs-hash:20070409093338-40155-0659e436348670b2864c21b152fa43bd5c80ab2a.gz [e9e083f | Mon Apr 09 07:27:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * better implementation of String#each (for 1.9 only) darcs-hash:20070409092724-40155-40941076e03e319b71f380da5d4651cf7f084324.gz [3fcb152 | Thu Apr 12 09:22:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * Informer => Inform darcs-hash:20070412112204-40155-251dad81eb6ae90279f0f92c8c08960c102387df.gz [2c2eae6 | Wed Apr 11 08:26:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * brand new controller lookup on startup - use YourController.mapping to get its mapping :) darcs-hash:20070411102623-40155-10c59dddb8168cd554382d1cd00e54bb1721b06a.gz [91192f2 | Wed Apr 11 07:40:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing (c) darcs-hash:20070411094059-40155-01a326de094998d861e6efa9565071593ba1c071.gz [fedba86 | Wed Apr 11 07:38:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing logger.rb by adding Informer darcs-hash:20070411093803-40155-faf661efdeff8547608475e9bcd3102fd42870b3.gz [0359cad | Wed Apr 11 06:42:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * add missing logger.rb for informer change darcs-hash:20070411084209-21a65-f1f891bff21f0028f50f528881ca603641632578.gz [1f54857 | Wed Apr 11 06:25:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * Make logger configurable Included loggers: * GlobalInformer (standard) * Analogger [Kirk Haines] * Syslog darcs-hash:20070411082526-21a65-5c36abb750f8e5f2f1d72e22e8901457396f89c5.gz [10323eb | Wed Apr 11 03:26:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * filter for Dispatcher::Action darcs-hash:20070411052608-40155-9dbbc96896b5ca0c0a120386ca621fd02b7c570b.gz [5218f52 | Wed Apr 11 03:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * new implementation of autoreload, not in usage yet, but it should boost performance and reliability (and avoid the awkward double-thread darcs-hash:20070411052344-40155-7a4f2ee6a03dd303c7e8c8f9e72b6cafc42535c0.gz [d37b124 | Wed Apr 11 02:22:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * replace the aquire with a verbose way... snippets were not added to the $:/$" darcs-hash:20070411042231-40155-0c84add3d9e73e963db1e43eff52934538ad9499.gz [0536dbc | Wed Apr 11 02:03:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * extending Global for setting and add a trait-link to tidy darcs-hash:20070411040349-40155-2411d892590f0679c8e1fa77d144a54f3f6538a8.gz [a217ad3 | Wed Apr 11 02:01:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * better implementation of tidy... only use it for debugging, it's leaking memory darcs-hash:20070411040129-40155-26f1fbfcd1324920c016f87e731a95d17d855236.gz [d220616 | Wed Apr 11 01:58:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove the post_dispatch from Dispatcher darcs-hash:20070411035852-40155-c9a583d19ea677c193fda955b3e9654f6083c9c1.gz [d1aed86 | Tue Apr 10 02:58:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * a couple of changes in Global, we can now collect the traits inside Global transparently (finally modular configuration) darcs-hash:20070410045808-40155-94578d3aaaaf3ef114bdae8d49928ca024f58d2f.gz [f885b22 | Mon Apr 09 13:57:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * use class-methods instead of instantination in the Dispatcher for speed darcs-hash:20070409155720-40155-601998e21f3a621d2ca29c1f70399d78e091a527.gz [e5fbdac | Mon Apr 09 10:25:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * extremly brutal refactoring of Dispatcher, it lacks a bit of elegance right now, but it is the right way darcs-hash:20070409122549-40155-ca1a3568a42446623808a1e44851ce697c139d4e.gz [2aeb0b2 | Mon Apr 09 06:59:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * a couple of small changes for compatibility with 1.9 darcs-hash:20070409085952-40155-310e19b9de6fc64fdfc79f4d2dbd5042daa22463.gz [9458821 | Mon Apr 09 05:11:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * small refactoring for Inform#error darcs-hash:20070409071133-40155-515196e33e247ee5cf24e181faa309d43d828834.gz [81330c6 | Mon Apr 09 06:00:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * small fixes for YARV darcs-hash:20070409080040-40155-4e8d09d1cba0cff97dd241a2b003da730054df2b.gz [b8eb8a8 | Sun Apr 08 19:36:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * exitstatus 0/1 for spec_all so the darcs hook can see if it's passing - finally automated recording-joy :) darcs-hash:20070408213611-40155-5cac76a4b4e08a83597f57157f3cf4951dde832a.gz [c492d3c | Sun Apr 08 08:11:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing flash for memcached darcs-hash:20070408101103-40155-72dcad338e6f1114baa199163fc14c0c54a66f82.gz [4cc8ea0 | Sun Apr 08 08:10:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add rake patchstat darcs-hash:20070408101048-40155-bfe99092f79eb56c03b0f9deada020bb6492ae6e.gz [15c7c67 | Sat Apr 07 15:33:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * allow request[:foo] to access request.params['foo'] darcs-hash:20070407173323-40155-b09e5eaeedae66b5267660a85ebde431ea857e82.gz [0f2c363 | Fri Apr 06 14:24:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add Inform::warn darcs-hash:20070406162410-40155-4dc863adefdc5da82f1fd2c4eeedc9d2a34be7a5.gz [bd3a884 | Fri Apr 06 14:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * check the template-dir mapping on startup for each controller darcs-hash:20070406162338-40155-c4bf6d3c9eec52318b335bec78225584710783aa.gz [6f409d9 | Fri Apr 06 13:30:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * a bit more elaborate but much safer handling of exceptions in Ezamar darcs-hash:20070406153029-40155-1fc36143b7a078e39991b41b1efd318238b834fc.gz [af2520a | Thu Apr 05 13:24:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * experiments in adapter.rb - please review darcs-hash:20070405152403-40155-a3be007b6f4b91dd93e7c606d8d93869504cf902.gz [13f0446 | Thu Apr 05 13:22:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * refactor of request/response/dispatcher/adapter (be careful, tidy broke) darcs-hash:20070405152258-40155-6a30d0c3c01f08c3d05b40943b33740c9fe6aea1.gz [ab250af | Thu Apr 05 03:19:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * little cleanup darcs-hash:20070405051920-40155-f6b8a70d2bc94812f3047b69c3b131454f0e0e3c.gz [c9f1a54 | Thu Apr 05 17:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * better error-reporting for usual NoMethodError in controller/template darcs-hash:20070405190652-40155-c0cc5fbebb7eea5bfbf055c040e3d854958468e0.gz [495d12c | Wed Apr 04 12:51:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * use normal blocks instead of Symbol#to_proc, there was some weird error in Informer#debug darcs-hash:20070404145114-40155-7819b321919102f69785bbd8057cde3008af9ce5.gz [5fff06a | Wed Apr 04 12:50:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing the usage of meth_debug, replacing it with normal debug darcs-hash:20070404145054-40155-1ec5ec3e1d3237ba8819776a0deec3703d4d8aa1.gz [fbe716f | Wed Apr 04 12:46:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add helper/inform darcs-hash:20070404144624-40155-835238984c18054ddd297a486ec5a0bff2b84165.gz [39a7d6a | Wed Apr 04 02:21:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * yet another possible refactor of Inform, thinking about just using Informer instead, the modules functionality is not used anywhere. darcs-hash:20070404042122-40155-0cf8a4edd4a18c8d47b1643b2551cb3f2749afa4.gz [5cd06d7 | Tue Apr 03 14:39:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding --console and --backtrace as startup-options for the bin/ramaze, improving error-reports for gone-wrong requires on startup darcs-hash:20070403163937-40155-d5d704de6a5b98be307883582899b2d5a9cd9299.gz [dd5d962 | Tue Apr 03 10:13:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update doc/TODO darcs-hash:20070403121319-40155-be983c7cc7979c69f9ab462000d6853f1fd1d729.gz [561c96c | Tue Apr 03 10:12:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fix rake task todolist darcs-hash:20070403121251-40155-4396fbe127cac3adce6f2384083e7db913c67637.gz [15f0449 | Tue Apr 03 10:01:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * huge refactoring of Inform for better handling of colors and nicer code darcs-hash:20070403120111-40155-a75a0da7b9d228a51ef71bcfa3f2e80a31a0a6f9.gz [0b15433 | Tue Apr 03 09:57:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove some debugging from examples/blog darcs-hash:20070403115722-40155-168ff78c413579a486d0fd153ffeb804d67ced47.gz [da9ec0a | Tue Apr 03 05:58:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * s/Global/Ramaze::Global in adapter.rb darcs-hash:20070403075855-40155-5b2af41b3c41fb6be3878756c814dc090d881feb.gz [c7899ea | Tue Apr 03 04:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add further colors/styles to snippets/string/color darcs-hash:20070403062302-40155-cbbdd9f7c2dd1540de4a86ca6e8f0569eafb0676.gz [f4d7551 | Tue Apr 03 04:22:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * avoid warning on reload of Inform / don't define Informer twice darcs-hash:20070403062235-40155-0171318323cadc5c8f91d6b1f4415b4dd6fd34a9.gz [ceb2b3b | Tue Apr 03 04:17:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * added simple colorizer for Inform - can be activated by Global.inform_color = true / added String#red/yellow/green to snippets/String/color darcs-hash:20070403061742-40155-c63dd416f95a6d9bc29a8af3cf7f65c82ab13d6a.gz [dfdadca | Tue Apr 03 04:14:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * restoring and improving functionality of Tool::Tidy, you can now output tidy HTML by setting Global.tidy = true | added ability to change the options and paths, no `locate` anymore darcs-hash:20070403061454-40155-44f4d92803dc984fa86b8fd95aec83e3f27edbf4.gz [0bb6265 | Sun Apr 01 13:31:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * 0.0.9 darcs-hash:20070401153145-40155-fe77fd1aff227d681425992c7227dedd83dcca5b.gz [e306bdf | Sun Apr 01 13:31:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing (c) darcs-hash:20070401153128-40155-a45427a0657b0c2785181d1b055fac1e6520cf87.gz [f1fbfb7 | Sun Apr 01 08:14:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * beautify code block css in tutorial darcs-hash:20070401101436-21a65-b2be32e7fd4684dfc85817a858a3c6007b9296cf.gz [29c40a5 | Sun Apr 01 07:39:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * typos, proper encoding and doctype for the tutorial darcs-hash:20070401093920-40155-ab0dd84de061114abffc4e1d8e8e4784a9e73507.gz [dd4583a | Sun Apr 01 07:15:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add tutorial/todolist.html darcs-hash:20070401091555-40155-cc71689ad3621d04b59daf0a3054cd075d74ef42.gz [dd24a92 | Sun Apr 01 07:15:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update tutorial/todolist - bluecloth instead of rdoc darcs-hash:20070401091531-40155-d2032c940e9b8e4a610ff02aa3715c6ea8403bba.gz [0aaed51 | Sun Apr 01 07:15:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update the principles chunk darcs-hash:20070401091509-40155-879eb9fcc7c1d833adf08f29af4f0e3b31a91bd3.gz [218b6db | Sun Apr 01 07:13:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add a tutorial2html to the rakefile darcs-hash:20070401091334-40155-672938cd516dca3c6a9b2109b4a036c3eeac75dd.gz [c36cc97 | Fri Mar 30 14:55:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * close all inform_to on exit darcs-hash:20070330165536-40155-06bf1d68f15605f5baa4a564ea60230edf0a29d8.gz [f635602 | Fri Mar 30 11:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing the ramaze call in the two failing specs darcs-hash:20070330132329-40155-a745c8cae840f96b5d52f530098bdca9ea9d64ca.gz [33ecce9 | Fri Mar 30 11:22:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * define a new Request#fullpath (in latest rack, not yet released) darcs-hash:20070330132255-40155-a451c20d7962745730d6d6dddb9e1a6ebd905c94.gz [a6bfd96 | Fri Mar 30 10:54:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * improving spec_all further, correct align of errors and information when a spec yields no usable output darcs-hash:20070330125457-40155-0889d73ed78e8191ad82a7f1a9d1ef70e1eea3c8.gz [8446ce1 | Fri Mar 30 10:40:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * change default in spec_helper to webrick instead of mongrel darcs-hash:20070330124028-40155-c2019dac4d82bcaec5012461ae724b5167b4e4f7.gz [a6f8860 | Fri Mar 30 10:24:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add attempt to require rubygems to spec_all darcs-hash:20070330122403-40155-80768f084f1867648a7b290accff7a04673782d4.gz [e167710 | Fri Mar 30 10:08:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add the spec/public/error404.xhtml and adapt the tc_error, static error-pages are now definetly working darcs-hash:20070330120813-40155-f7a5c03345c7e57a4fdd11b90d227a1c166a1039.gz [05dc235 | Fri Mar 30 10:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * replace Term::ANSIColor and the stubs with a small actual implementation darcs-hash:20070330120659-40155-fde6dc52cb6920d740f32341be5a7b8245e7756e.gz [fc00393 | Fri Mar 30 09:36:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * allow multiple 'pipes' for Global.inform_to, just give it an array (backwards-compatible) darcs-hash:20070330113611-40155-3d9bf911089bf33bd180f1bc73340ae904def1cb.gz [4f7ee22 | Fri Mar 30 09:35:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * updating tc_error darcs-hash:20070330113559-40155-44933c332c8b8f87936783104ce0ae920737669c.gz [9b8aed1 | Fri Mar 30 09:35:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * getting rid of a warning about redefining Traits darcs-hash:20070330113528-40155-3e21de015a73991a36a5215594ee2e8224107d3e.gz [06f89c7 | Fri Mar 30 09:34:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * Sanitizing error-handling for non-existant static error-page darcs-hash:20070330113444-40155-24cf5b7aba6066f0a9cfab62cdc4937f942ac542.gz [8f89058 | Thu Mar 29 12:39:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing Inform, it did wrong matching for $stderr/$stdout darcs-hash:20070329143924-40155-0137a9ece15d0d1da69db2ade1e1e60b2cbf4c3c.gz [37ec82f | Mon Mar 26 12:25:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add example for nitroform darcs-hash:20070326142525-40155-c0a28f83beebc61526a513f4aba6a336549fa71a.gz [01a5821 | Mon Mar 26 12:24:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add a first stub for helper/nitroform - there seem to be some odd problems darcs-hash:20070326142458-40155-9da50e4b22ccaac24c45e14bc969da89e5f45200.gz [01975df | Mon Mar 26 12:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * don't raise when we can't find the file wanted by caller_lines darcs-hash:20070326142352-40155-a78137dd9324a8bf955d67df2b8b98089e727221.gz [44213a6 | Sat Mar 24 15:03:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fix Kernel#aquire (by lasso) darcs-hash:20070324160301-40155-a7afda8bb6dd08a8f4c59f1082a52248bc26cf9d.gz [0722510 | Fri Mar 23 19:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * improve handling of missing actions, now raising NoActionError darcs-hash:20070323200645-40155-f74e220186e1c57c84d1e01e099dce8fbfc6d82c.gz [69881cc | Thu Mar 22 20:16:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fix serving static files on windows (hopefully) darcs-hash:20070322211618-40155-4d08cf03103ceb9f71e00c902c4c4972cb671d51.gz [dd8270e | Thu Mar 22 03:09:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove the useless _openid_consumer_service from the session afterwards darcs-hash:20070322040926-40155-a2f14910174cb3f416aae1f0faa6292bfcd203cc.gz [f630397 | Thu Mar 22 03:09:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add examples/identity darcs-hash:20070322040912-40155-6074055aeb09f18d8b35abe250b4bd21eb3e5121.gz [0875147 | Thu Mar 22 03:00:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing IdentityHelper so that it works darcs-hash:20070322040012-40155-71ff57be5f92f199fb1e85d4e20d24f93e435c42.gz [03e3f14 | Thu Mar 22 02:59:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * move helper/openid to helper/identity darcs-hash:20070322035945-40155-44e55987147a05b7bae20c4b8b6731f0a6250b8e.gz [1d7d15d | Wed Mar 21 02:11:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add ::create_with(hash) to store/yaml darcs-hash:20070321031122-40155-a0bd6b7a113ae119b38058cd4133abdf34152326.gz [36007c6 | Wed Mar 21 02:11:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * show the real error from Template::Ezamar darcs-hash:20070321031102-40155-af59b19d58c23c16ce9571eb7a90d1b155b9bb97.gz [f85c29e | Wed Mar 21 02:10:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * make the error parsing a lot more robust and fault-tolerant darcs-hash:20070321031021-40155-2f4dfd7487bdebb69044b29687f7a5d3219bb236.gz [3829a3b | Tue Mar 20 12:51:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adapt Controller#error for the new caller_lines/caller_info darcs-hash:20070320135106-40155-8a50e91fa6d5fdd3b06cdd00959319f6cb7dc075.gz [3eac415 | Tue Mar 20 12:50:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * extracting caller_lines and put it into snippets/kernel/caller_lines - also small fixes in caller_info darcs-hash:20070320135026-40155-3fd4ee08967f2e038da72f51d02613fafda7a5c1.gz [b5128e9 | Tue Mar 20 12:50:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * small changes in Method#name darcs-hash:20070320135010-40155-9fea1c1383b8b8e03a8306633aeecc75b4c6b493.gz [5bc5789 | Tue Mar 20 12:48:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * move snippets/kernel/caller_lines to snippets/ramaze/caller_lines darcs-hash:20070320134848-40155-bb4355be2ef11bc296cfc8fa22d686e98205c4c4.gz [bf8019c | Tue Mar 20 12:47:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing problematic error response in dispatcher darcs-hash:20070320134757-40155-cd961d5d61e156dfa00486452b3d3873289a953c.gz [dcb506c | Tue Mar 20 12:12:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove Kernel#silently darcs-hash:20070320131208-40155-016c1361cc8aab57b116806c7657564a649f7c6a.gz [86340a5 | Tue Mar 20 12:10:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * require pp before patching pretty_inspect darcs-hash:20070320131034-40155-ef2fc2b756c8ce138ee5be2029f74b8e0ac35f6c.gz [9fc3114 | Tue Mar 20 12:10:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * move Method#name from snippets/kernel/method to snippets/method/name darcs-hash:20070320131001-40155-4ece13ad7359349420244182705da0f3b3e47131.gz [ac82206 | Tue Mar 20 12:09:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove Thread#dead? darcs-hash:20070320130930-40155-5cdf04dfb6c1a029c903ea00a2e8dfb608c8071b.gz [1ecaaf0 | Tue Mar 20 12:09:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove snippets/kernel/rescue_require darcs-hash:20070320130916-40155-2ad0b7b47202f37bcbad73876ae50c2caa7a8d74.gz [f03a33b | Tue Mar 20 12:08:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * move snippets/kernel/self_method => snippets/kernel/method darcs-hash:20070320130839-40155-f63358b2d719e89d4ca5ac33ef3b6a139f7048b2.gz [ab4e603 | Tue Mar 20 12:08:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fix Rakefile so that it produces good gems again darcs-hash:20070320130813-40155-8ce5fe0e2eaa01cbfff240dc351bda477bdaa433.gz [456705e | Tue Mar 20 12:07:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * move snippets/kernel/autoreload => snippets/ramaze/autoreload darcs-hash:20070320130716-40155-033302aa5bd8a02cc64782af766904f0e0de9c47.gz [0e7f949 | Tue Mar 20 08:46:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * don't R() the passed params to redirect and update docs darcs-hash:20070320094640-40155-a92f27451a887e8e17a2498f371cea701be27c31.gz [584f315 | Tue Mar 20 07:29:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update tc_helper_redirect darcs-hash:20070320082947-40155-eb82c29769b564416515213a04e0b2e29fef98a4.gz [80882c8 | Tue Mar 20 07:08:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * better information about errors in templates darcs-hash:20070320080858-40155-0c062c4f0ef795ffae130259df4d84e0b441783b.gz [1395b77 | Tue Mar 20 07:07:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * better handling of redirections, you can now catch(:redirect){ another_action } to prevent redirection from that path of execution darcs-hash:20070320080757-40155-81446504cf29ba234d5060c68ef9d2b77696884e.gz [055a621 | Tue Mar 20 07:07:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * typo darcs-hash:20070320080724-40155-9fa72affce33f60cebae714f3f6eb90de22c014a.gz [dd36c63 | Tue Mar 20 05:53:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * support custom status-code in redirect and do R() automatically on the params darcs-hash:20070320065312-40155-bfc7e7953bab340391880f84c07d7b753cd1388b.gz [3da317c | Tue Mar 20 05:43:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update Rakefile darcs-hash:20070320064319-40155-7ac2193a77442db7d5dbb194b7c03e26650aeb4a.gz [180cbe2 | Tue Mar 20 05:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add (c) to OpenidHelper darcs-hash:20070320062335-40155-4d924e1ed022156b7ccdb03b044258cbd25d5589.gz [fed9d3b | Tue Mar 20 05:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update README darcs-hash:20070320062305-40155-c5081d1c54790d7c084c06163f1f72729262b42d.gz [3d02a08 | Mon Mar 19 06:21:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update examples/todolist darcs-hash:20070319072101-40155-5b239db302340c39d92230a99c288457a4c95b63.gz [2078a47 | Mon Mar 19 06:20:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update tutorial darcs-hash:20070319072042-40155-e3d23177820bf496d1b2634cf65b8b3fd240fc7a.gz [55c99e9 | Mon Mar 19 05:58:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * small improvment to template/ezamar makes methodless actions work again. darcs-hash:20070319065841-40155-e4f9a56a8a34448cce64e809fd6dc60e791cd633.gz [bba7095 | Mon Mar 19 05:45:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove helper/template_map darcs-hash:20070319064514-40155-0a5d1842598378f40096871421f005c5eaf109a5.gz [75d3b28 | Mon Mar 19 05:44:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update feature-list darcs-hash:20070319064459-40155-25379c563b881322c8f5ec76a2ab51db567a2867.gz [d91d4b1 | Mon Mar 19 02:03:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add a Rs method to LinkHelper to make the usual R(self, :foo) stuff into Rs(:foo) and update the tc_helper_stack darcs-hash:20070319030324-40155-661eb80f2fa03786b9bfd26061c6fd617bd7e4e9.gz [cb99c5b | Sun Mar 18 22:14:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add first implementation of OpenidHelper (yet untested) darcs-hash:20070318231457-40155-a43abc27457633cd67ef27a50e7a3553f837ae2a.gz [64b01d2 | Sun Mar 18 21:58:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fix tc_helper_redirect darcs-hash:20070318225838-40155-09f950fe33264ee80b6b0871e72efd2485ea4f6b.gz [76041c1 | Sat Mar 17 12:09:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * 0.0.8 as version darcs-hash:20070317130925-40155-f5c9620baf707ceaf8bc57a50b2c68459c27c9ab.gz [f585184 | Sat Mar 17 12:09:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * alias referrer referer darcs-hash:20070317130916-40155-d8ef5a588cd97d076bb717fc7b0693305a6a730b.gz [85d9638 | Fri Mar 16 09:47:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * document CacheHelper darcs-hash:20070316104740-40155-3ff30184b5b689c6e22b4962078ddc5f579ff644.gz [7325f95 | Fri Mar 16 09:39:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * document FlashHelper darcs-hash:20070316103920-40155-e334e55a228d23de21063942312cb4e6cc35398b.gz [77c456f | Fri Mar 16 09:24:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * cleanup and docs for Ramaze::Request (add values_at for quick params-retrieval) darcs-hash:20070316102434-40155-2a22843ef37c72c12d202ccfb69c6a268925bc1a.gz [d6a26e6 | Fri Mar 16 09:16:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * some cleanup and documentation for Trinity::Session, it also got a trait[:finalize] as a pipeline of what to do on finalize (finalize_flash only atm) darcs-hash:20070316101618-40155-14ab729d5f58a46875ceef6d1f2096d1d63ccc9c.gz [0d900e4 | Thu Mar 15 09:21:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * don't escape the @title of an error twice darcs-hash:20070315102134-40155-7fdda18c58f344cee4d2de08f00b31928dc2ab13.gz [55ccfa5 | Fri Mar 16 06:17:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * less agressive redirect in R/link darcs-hash:20070316071745-40155-a5b8aeeae3f85fa55b0fe2657366292e1f13101f.gz [d0c5566 | Thu Mar 15 04:57:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * proper inspect in the error-page and adding inspect/pretty_inspect to Global darcs-hash:20070315055733-40155-eaf081b3aef7c7490341f117356e1a60d62ccecb.gz [f653234 | Wed Mar 14 13:09:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * newline :) darcs-hash:20070314140907-40155-834a53cd0f54dbbcac9c04d3bc161c8317994438.gz [93a29e1 | Wed Mar 14 11:44:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * checking all the caches in tc_session darcs-hash:20070314124425-40155-df44d33a0d214df6be46ab58bda7b6fc3fdbda41.gz [324f4f3 | Wed Mar 14 11:43:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * nicer output of specs of helper_auth and tc_session darcs-hash:20070314124359-40155-5432b1df6d9a8610e73f28a71bd9b1d82d2b75f1.gz [abe4a1f | Wed Mar 14 11:43:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * reimplement Trinity::Session darcs-hash:20070314124339-40155-39f71216e622360356761bce0ff867c085c59c7f.gz [127df0d | Wed Mar 14 11:42:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing the caller_lines bug darcs-hash:20070314124258-40155-a53084b86c0715791f934716ce1ef0133dd88b7b.gz [6600bbb | Wed Mar 14 11:42:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * no rescue in StackHelper anymore darcs-hash:20070314124244-40155-6c5d2362aab005bb89a26212c0647575110a9a6a.gz [4e11d24 | Wed Mar 14 11:42:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * small fix in yaml_store darcs-hash:20070314124232-40155-6333576479886df3920d8b5b45b69a6463d95186.gz [29fdd54 | Wed Mar 14 11:42:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * small nicety in examples/simple darcs-hash:20070314124220-40155-efc637b322aa43388fc5bc5c03eda07c3dc3ab14.gz [f4e1043 | Wed Mar 14 05:45:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add 'stubs' for CGI and FastCGI - they are not tested at all yet, suggestions for specs welcome darcs-hash:20070314064530-40155-c023b94c0c2a8a5ff86959b723d0573f732fe573.gz [49b26aa | Wed Mar 14 05:44:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove the actionview_stub from HAML, it's not needed with HAML 1.5 (make sure you upgrade though) darcs-hash:20070314064442-40155-62913be79152ad9cfb60e9fb4e91ccfb7b02cbb0.gz [fec2947 | Tue Mar 13 09:50:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove the ezamar-'feature' ;) darcs-hash:20070313105043-40155-0e3ce1a2e432d56ac7bdc88e884de8395a5d9246.gz [b888563 | Tue Mar 13 09:42:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * speed up the ezamar-spec a bit and proper errors for markaby darcs-hash:20070313104214-40155-d0673e2f38a6e335b293ced79ce98e6f86965afa.gz [f07574c | Sat Mar 10 17:19:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * deleting entities in Store::YAML darcs-hash:20070310181905-40155-8009ac74ac95b29807df48e0db4d23b6aedc4ca2.gz [7a8d9ae | Sat Mar 10 17:07:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * possibility to #{render} in your controller/templates darcs-hash:20070310180710-40155-f879c9c6117e437a0862b27294a1223e45160a7a.gz [ce56b1d | Sat Mar 10 15:25:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * escape the title of the error-page to show classes properly darcs-hash:20070310162515-40155-e5b3bf39a2d7fda19b067c9aede2b9b7ede182dd.gz [34a65fc | Sat Mar 10 14:08:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * small improvments to bin/ramaze - output of version and better info when there is nothing to start darcs-hash:20070310150838-40155-17330bc545d95661f566432a689365b61ff77eac.gz [6022d86 | Tue Mar 13 03:46:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * small improvment in custom_template selection darcs-hash:20070313044623-40155-62adee8fd8b3e902270f2f7fa63d017707233234.gz [834443a | Mon Mar 12 12:41:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove debugging-statements darcs-hash:20070312134155-40155-3f734d8cee5f919b8a3478cb4b445c5ae35299be.gz [5331974 | Mon Mar 12 10:53:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * better error-reports from Ezamars transformation darcs-hash:20070312115347-40155-3eeab99c2c1ebdc9a2df18e8e76a95ab7a348f17.gz [edf08fc | Mon Mar 12 10:53:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * no more errors about #debug? missing from WEBrick darcs-hash:20070312115331-40155-b909c2b66c14787cf3029f6a81b85e6c27320732.gz [249d079 | Mon Mar 12 10:53:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * improved error-page (minor fixes) darcs-hash:20070312115307-40155-578164c4c0ce9586fae25c98b6b5e7c9689e3065.gz [45d6531 | Mon Mar 12 10:52:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing the ezamar example darcs-hash:20070312115218-40155-c7f5a5886d5abc7fad0fe4d7acd9e4dc29a4a0f5.gz [43520c4 | Fri Mar 09 11:15:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing spec_all to report the real number of failed specs darcs-hash:20070309121500-40155-30a0fb65734bc0afa2ddc8168baff72940c00e8e.gz [8435e40 | Fri Mar 09 11:14:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * shorter line darcs-hash:20070309121434-40155-c2d1f91e85108ab06e6b2c0cdd908f1f69b80e0f.gz [715abcd | Fri Mar 09 09:25:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * don't assign a FLASH_PREVIOUS when we don't need to (also add a (c) to pretty_inspect) darcs-hash:20070309102503-40155-fc7f7eca9d24a9ecb92861f11d7be7da3341829f.gz [fe71d13 | Fri Mar 09 09:08:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing FlashHelper (with a new SessionFlash in trinity/session) put the new specs into the old tc_helper_flash darcs-hash:20070309100855-40155-09400be6f382e5b749179b4ceb0f6e8149d53774.gz [f0c1347 | Thu Mar 08 12:36:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * spec for flash, template finding fix * trait :foo_template => :bar__foo did break * added spec for flash, no fix darcs-hash:20070308133604-21a65-7cd7c17ab4b89e7ad1bd93ac481cf0603bec1dc5.gz [55bd4ef | Thu Mar 08 01:07:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * relax arity-sensitivity, it's impossbile to get right and shouldn't block correct parameter-sets darcs-hash:20070308020722-40155-0eaf04dcef5f61957c457785b698bc3a697eb05c.gz [59c1852 | Wed Mar 07 13:16:00 UTC 2007] Jonathan Buch <jo@helloit.fi> * More specs for params darcs-hash:20070307141601-21a65-7cb3a9d4560f67971b61520117aaec05030dd557.gz [080873d | Wed Mar 07 13:11:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add fallback for pretty_inspect darcs-hash:20070307141117-40155-ca9c0dcd0a0eecfaa7e0a569ed42003f77cf7a73.gz [673212d | Tue Mar 06 21:01:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing session-problem plus the specs darcs-hash:20070306220132-40155-cecd5e90eecf41f417cc8456ca34398bddb1c3dc.gz [001e694 | Tue Mar 06 10:57:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing the flash_id darcs-hash:20070306115716-40155-84d8b111f741ffc423fb1b9be4cbb035a8b2b9ae.gz [bca935e | Tue Mar 06 10:09:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * informing you about missing elements darcs-hash:20070306110913-40155-c8058a080e7d2fd2453a830a2327634d747ee140.gz [09fd150 | Mon Mar 05 21:10:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add rack in the tc_dependencies darcs-hash:20070305221005-40155-2407cbacc4ad2ce525013593d68da0abc5bec623.gz [34b7d5f | Mon Mar 05 12:48:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * new custom error-handling, tell me your exception and i tell you where you land darcs-hash:20070305134806-40155-5c2913122c1a3ce1ff1ec9632ebba3c3d0784796.gz [8d089e9 | Mon Mar 05 12:44:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * temporarily add Helper to Element darcs-hash:20070305134405-40155-152e305c20126e89e19748d7640323195d895cf5.gz [64aef28 | Mon Mar 05 12:12:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * avoid malformed response from the controller darcs-hash:20070305131245-40155-7cb4b0f0a048a78be05f7e12d4d0e36284523fd8.gz [8c33f5b | Mon Mar 05 11:47:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * specs for FlashHelper darcs-hash:20070305124716-40155-850eb5a4ec8748c3d9e0b53494445bf2ffa7421c.gz [d24f1a7 | Mon Mar 05 11:47:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add ability to delete specific key from session darcs-hash:20070305124705-40155-f93c12bc978abb45f4e958af67bdd9f72322f579.gz [ea25349 | Mon Mar 05 11:46:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * improve error-handling in Template::Ezamar darcs-hash:20070305124655-40155-7144746c187bc2c70a16160971c14f2ddca35cf7.gz [759f488 | Mon Mar 05 11:46:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add FlashHelper darcs-hash:20070305124646-40155-68084c14551e938ae5e7b1bd333ef9e01aa7c49c.gz [61ed40f | Mon Mar 05 08:53:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * updating some readme chunks darcs-hash:20070305095341-40155-6c775b6fc908399b7460c21ae4c921c85f643a5d.gz [c97f0a2 | Sun Mar 04 12:53:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * handle the case when there are no controllers... darcs-hash:20070304135311-40155-8ebe25db8e1d18a185d750bda6503c79eb1923c3.gz [38760d1 | Sun Mar 04 11:18:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove setup.rb since i don't provide any support for it. darcs-hash:20070304121836-40155-b5788215ad1b68ab932face972c4a2bd747d52fe.gz [980b312 | Sun Mar 04 11:05:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update Rakefile (dependencies and some tasks) darcs-hash:20070304120537-40155-f65af374ea26c5d8a5c40e45a414b9ba6fb11fdb.gz [3da14cf | Sun Mar 04 11:01:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * change the require for rack, make sure you got the gem installed or it's in your path (or required already) darcs-hash:20070304120119-40155-c22a25c0033ebae4034a2ba285b697b72096a50d.gz [e840917 | Sun Mar 04 11:01:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove vendor/rack since rack has its release out now darcs-hash:20070304120103-40155-5bfcd56d36bfe8e38d1181bb6e8e8eb7ad7a694b.gz [6871b36 | Fri Mar 02 18:35:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * controller has to respond to :render darcs-hash:20070302193551-40155-053e0aff70718844740d2da31e6481f8fa749269.gz [bbf8127 | Fri Mar 02 18:35:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fix lookup for the cache darcs-hash:20070302193507-40155-489a002083deaf8fde41358e756da5751d88a23d.gz [b3bbc00 | Fri Mar 02 16:38:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * improved error-handling, templating-engines take responsibility now darcs-hash:20070302173825-40155-5a5d53fbdcc647cb16f7e8b276aaf8403cf355b7.gz [946e107 | Fri Mar 02 15:48:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fix docs for examples/hello darcs-hash:20070302164838-40155-c5651c1e23005b145e60fca2bab026edc0dac3f3.gz [2474f84 | Fri Mar 02 07:49:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * proper namespacing, address everything under Ramaze, don't rely on the user to include Ramaze in the main-namespace darcs-hash:20070302084911-40155-d995e6aec3f1a870b5d89728bcd94c28b56faa64.gz [b9a54f3 | Fri Mar 02 07:18:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing namespace for Informer in adapter/webrick darcs-hash:20070302081832-40155-3fa49dbf218ac7e6b465525b6c17dbf941b1d3ce.gz [4e892e6 | Wed Feb 28 13:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * rack snapshot darcs-hash:20070228140619-40155-059ee31849cdc02baace86a1e3eb107e84dd63f0.gz [790174d | Mon Feb 26 13:54:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * testrunner should work on windows darcs-hash:20070226145456-40155-170b6cf8b11ba0daa21c084eacd7b46383d791da.gz [651e392 | Mon Feb 26 13:13:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * refactoring the filtering in dispatcher to return early results and do nicer error-handling darcs-hash:20070226141311-40155-d61bef0f14d87b99c9842503bd2d8ce102b859b0.gz [4646bc5 | Fri Feb 23 14:16:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * oh phrack, we just require template/ezamar on startup now... no more autorequire-magic :P darcs-hash:20070223151610-40155-1b6a497033364fe3fa1a33b131719a2d42319fe4.gz [7feb550 | Fri Feb 23 08:45:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * updates to the README darcs-hash:20070223094500-40155-38db3530946bbae80e24a9e2793adb0e8ef4d360.gz [47d742b | Fri Feb 23 03:47:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * making it possible to go without Element in AuthHelper darcs-hash:20070223044716-40155-44602b718aaeef7114c3a3de4490a4121b7aaf19.gz [9bbd0c9 | Fri Feb 23 03:46:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing references to Element in proto and specs darcs-hash:20070223044653-40155-fd40e57e4513ff13db33dc4d71b371e6e5439057.gz [3454b44 | Fri Feb 23 03:46:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing references to Element darcs-hash:20070223044639-40155-c2d9697cf360a9a3271ddc8e597a89cbf3324163.gz [da55dfc | Fri Feb 23 03:45:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * Morpher and Element moved into module ::Ezamar - please do now class YourElement < Ezamar::Element - this is part of an ongoing effort to extract Ezamar for broader usage darcs-hash:20070223044532-40155-8389875df67c7b75e652464c18910d0d51aa0ecc.gz [f0a5ad3 | Thu Feb 22 10:56:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * new doc/README from the chunks darcs-hash:20070222115622-40155-a2f9c4dd26d7b68bf9481eaaa5263dd309246908.gz [01ba8f9 | Thu Feb 22 10:56:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * proper heading for README darcs-hash:20070222115609-40155-30a043fba93ff1409c775e0a145a784922f2c3c6.gz [4431d11 | Thu Feb 22 10:55:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * splitting README into seperate files in doc/readme_chunks darcs-hash:20070222115525-40155-299dd183790be246fa1914765d30846bfc2fdb51.gz [421f48e | Thu Feb 22 10:54:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add rake build-readme to build the README from the chunks in doc/readme_chunks darcs-hash:20070222115453-40155-9cde1fdc2b5e0f6adb6c4106fb192aac92fce6f1.gz [79a5cc4 | Thu Feb 22 10:45:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove the fluff from trinity/response - soon to be removed altogether darcs-hash:20070222114553-40155-c9515d5c4c820ab2a532d503ed5f0585269918ab.gz [62f041f | Thu Feb 22 10:40:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * Ramaze::Request => Rack::Request darcs-hash:20070222114010-40155-8f910a4ab5f24fda6743e75e317329b79a6de825.gz [0c8bc06 | Thu Feb 22 10:39:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * set 404 in Controller#error darcs-hash:20070222113957-40155-5e9ad32e916034a0bc67548e6ec8233e1037acff.gz [0290d05 | Thu Feb 22 10:38:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * proper check for 404 in tc_error darcs-hash:20070222113850-40155-4c58a624061d36438ca3078ef819f67e47f04f2b.gz [6e9085c | Thu Feb 22 04:58:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adapt the specs to take advantage of Context#story darcs-hash:20070222055845-40155-7f9917e21268ce5d3c27a7c47f7ed17c5455361d.gz [9a5e96f | Thu Feb 22 04:57:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding Context.new with block or Context#story to provide a way for consecutive requests inside a common context. darcs-hash:20070222055747-40155-6000102b26e380e059c2aa44a71ae9f91594c115.gz [5261746 | Thu Feb 22 04:57:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * using request_uri instead of path_info for StackHelper to preserve params darcs-hash:20070222055720-40155-6762aa4ae50d24fe305e675b85c43077bcf9653e.gz [1dc5e08 | Wed Feb 21 22:37:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * rack snapshot darcs-hash:20070221233701-40155-70a7705dedbfeb98467bf058e799727182ea63f5.gz [8ea855a | Wed Feb 21 07:54:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing spec/tc_controller darcs-hash:20070221085411-40155-91ced6572c9e403337d3d378795a10e8a496c147.gz [0a88185 | Wed Feb 21 07:53:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing the first-load-problem which was caused by complicated require-procedures. darcs-hash:20070221085309-40155-a4cf5b577a6715d756e37f04dca34f659c3a62ba.gz [4612b57 | Wed Feb 21 07:52:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing examples/todolist darcs-hash:20070221085239-40155-2453329905adbed6cc8b5b2cf801a6b7d1136286.gz [9a02e46 | Wed Feb 21 03:18:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing Global.cookies = false darcs-hash:20070221041833-40155-95f13f4a8d031112c42203d3f9482f301a0df9bb.gz [7533a3a | Wed Feb 21 00:16:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * snapshot rack darcs-hash:20070221011649-40155-909962de4b629049fbab79ff31fdb6475e686030.gz [a1af7ca | Tue Feb 20 09:20:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add doc/GPL darcs-hash:20070220102044-40155-8643e48a8173b599fabbb349f7fe33c5b3ff4342.gz [ebd1ad7 | Tue Feb 20 20:53:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * support link('/' :class => 'foo', :id => 'bar', :title => 'index') darcs-hash:20070220215303-40155-9fcced2cf123d157e97442c94898b1a4cdd0b956.gz [e5ffc40 | Tue Feb 20 20:52:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * small improvments in examples/whywiki darcs-hash:20070220215234-40155-da2444bfcf62c8fe7af4cd98fff4e9a14acc0e6c.gz [f1ba6ec | Tue Feb 20 20:32:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * extending examples/element a bit darcs-hash:20070220213235-40155-16480312231fd6223ebb4cd653cadfe59a7e0841.gz [6d44024 | Tue Feb 20 20:30:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing examples/caching darcs-hash:20070220213012-40155-8c849dd248df529c7076ac5fd53eff19da7e6e68.gz [5f87a43 | Tue Feb 20 20:24:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * hopefully fixing the issue of first-load problems darcs-hash:20070220212457-40155-c9d05362472c690b8b2c4573dc24cd6deccab52d.gz [cb5d0ac | Tue Feb 20 20:21:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add lib/proto to the lookup-paths for static files darcs-hash:20070220212100-40155-235f20da4731f5a0919070a378d899a84acc70f8.gz [a724605 | Tue Feb 20 12:50:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * snapshot of rack darcs-hash:20070220135014-40155-22c49a95aeb6f397a7bf7f0fa967c6c2d6d718ab.gz [831f46e | Tue Feb 20 12:49:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing filters, the third darcs-hash:20070220134934-40155-4938ab2dbe63d4a3e8fa03794a83f9b41d6844bd.gz [9aeecc5 | Tue Feb 20 09:07:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * change order of filter... again darcs-hash:20070220100730-40155-10c865b7283807e0266d0b8ee3beac5acc3216c5.gz [fc9f303 | Tue Feb 20 09:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * change doc/COPYING darcs-hash:20070220100612-40155-cfa0942d93d84adfce499087cef874197404d2c2.gz [bd8d70c | Mon Feb 19 07:27:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * change filter-order for static files to take priority darcs-hash:20070219082714-40155-1b7b3afb122609a3b8953dbb866809ebc2aeaa3d.gz [64f89b1 | Mon Feb 19 07:19:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * turn off $VERBOSE again darcs-hash:20070219081922-40155-1027d5cce76752d01684c547b6a14a15083e8fb1.gz [a6f6eba | Tue Feb 20 04:57:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding a requirement for rubygems in tc_dependencies (if you don't have rubygems you don't have to worry about that anyway) darcs-hash:20070220055741-40155-462f224351ffce19ce59c25bf83bf77be4765a2d.gz [6f54e69 | Tue Feb 20 04:57:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing Global.cache_all darcs-hash:20070220055728-40155-2826d1cee6e204cb779cc3799e7409dbaa577590.gz [7394459 | Tue Feb 20 04:46:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * multiple fixes in the examples/blog darcs-hash:20070220054611-40155-c9d0315bf41bdc69812bdfb159e5f13a8b2d7f9c.gz [71cbcd0 | Tue Feb 20 04:45:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adapting the various specs for the new context/request helper darcs-hash:20070220054514-40155-52b29898546acd2ef9de65f749dee44655d28c63.gz [cde581d | Tue Feb 20 04:44:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * switching the testing-system to a modified version of simple_http, much cleaner :) darcs-hash:20070220054406-40155-ebad073160b425ff1d843e66479d9c8da21d1164.gz [067ffbb | Tue Feb 20 04:43:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * refactoring request_tc_helper a little bit darcs-hash:20070220054311-40155-16465d8e929cbf064bc3a132726ed9c38e3e0dd4.gz [f0a9b4b | Tue Feb 20 04:42:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding session.clear darcs-hash:20070220054240-40155-87ce90b880a8ebb8d76e0c2c8f1036ee610fd6ff.gz [a34a805 | Tue Feb 20 04:42:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * using our own YAML::Store for store/yaml + some other minor changes darcs-hash:20070220054207-40155-92a9ee1dbbf7c260ce502e35680255545e15502a.gz [efefeda | Tue Feb 20 04:41:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing StackHelper darcs-hash:20070220054147-40155-e479494fc840e348b3f5854849c8f6fdc12a1dba.gz [fb394bc | Tue Feb 20 04:41:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing RedirectHelper darcs-hash:20070220054116-40155-75ddf0c4fdcb59fe90ed9ce448f8cf7d567bc358.gz [ef79501 | Fri Feb 16 18:27:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing example/caching darcs-hash:20070216192730-40155-25877232cca9f2bac43cb282dabc9f3db11bca44.gz [eccced6 | Mon Feb 19 14:29:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing serving static files darcs-hash:20070219152947-40155-6c617b465dd65266cb94a59596623e54c68bf5cf.gz [6731d14 | Mon Feb 19 13:59:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing the fix for the fix for the error-bug darcs-hash:20070219145919-40155-0c5bac829abec2fec7a20595e7bf0ad965133d8b.gz [2c5ce0d | Mon Feb 19 13:42:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * prevent endless error-erroring darcs-hash:20070219144231-40155-f57428c6b2d0a461f3b7e02ea7fcf084ec7ce829.gz [b61c385 | Mon Feb 19 04:39:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * removing cruft from trinity/session, some smaller changes in tc_helper_auth... still not working though (last spec failing, most likely due to our messed up Context) darcs-hash:20070219053955-40155-e7337a50d36d7c8d5c42f0c71f6a6b17a57b2561.gz [da83c80 | Mon Feb 19 03:33:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing redirection and error-handling, removing cruft from trinity/request (who'd have thought that it would fit into one screenful one day) darcs-hash:20070219043358-24576-4673002ba3b23a6bc6c2d13d6789eb676abb983b.gz [55438b8 | Mon Feb 19 03:33:00 UTC 2007] manveru <m.fellinger@gmail.com> * ignore the new vendor/rack for fixes of copyright and spaces darcs-hash:20070219043329-24576-5374a27aa5ccba56116bd5c688ce5551bf9e3f66.gz [1d62faf | Mon Feb 19 02:45:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding rack under lib/ramaze/vendor/rack - until rack got its first release darcs-hash:20070219034535-24576-a4ecca80b899e33ccc0a682a67ec85036187f8b6.gz [39fc818 | Sun Feb 18 22:00:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing sessions and spec_helper, removing tc_request_rack darcs-hash:20070218230059-40155-2ceb4fc2c23503697e38cc014562bec2ecbb77fd.gz [4b017c2 | Sun Feb 18 12:08:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove provisory rack-adapter, it's replaced by adapter/mongrel|webrick darcs-hash:20070218130854-40155-4347cc2fca5c0b0728cfec4463058a60e0628967.gz [13aa60e | Sun Feb 18 09:32:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * Switch adapters to work with rack darcs-hash:20070218103229-40155-ae1fb4f810d7cab5930e189091adad58fefeb0f6.gz [4cd033b | Fri Feb 16 20:12:00 UTC 2007] Christian Neukirchen <chneukirchen@gmail.com> * Add primitive Rack adapter darcs-hash:20070216211210-4fc50-de48253dd589fc04f8906f2ca72368dbccd8da87.gz [a3c3226 | Fri Feb 16 14:49:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * some small fixes and adding MIME-types :D darcs-hash:20070216154943-40155-004208f83ba5018cf0321f6df5998ff8cf4538ee.gz [d4fec6c | Fri Feb 16 13:01:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding cleanup for tc_cache to Rakefile darcs-hash:20070216140119-40155-34ea2d813d1cd1a003f05e0179896adeff6dea81.gz [8a22e3b | Fri Feb 16 13:00:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * implementing PUT/DELETE for WEBrick plus neccesary abstraction in trinity/request darcs-hash:20070216140047-40155-7a0712ad01528f1769b877bff606d3eb5d452cb6.gz [0bc16da | Fri Feb 16 12:59:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding the files neccesary for the up/download specs, splitting the tc_request into tc_request_mongrel and tc_request_webrick darcs-hash:20070216135912-40155-17b97ae67b86ff285a24756552ee0577d35b5d31.gz [d3089d4 | Fri Feb 16 11:31:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add doc/ProjectInfo for coming switch to ratchets darcs-hash:20070216123146-40155-219950717f4cca953828906042ea029e659036d7.gz [8e05b9e | Fri Feb 16 11:27:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * major rewrite of dispatcher, affecting the controller-lookup and the adapters, this is much, much cleaner now, though not perfect yet - but the first step of many. darcs-hash:20070216122702-40155-aab92f1e5fa4a074b30243db0a833267c0992621.gz [15a13c3 | Fri Feb 16 03:01:00 UTC 2007] manveru <m.fellinger@gmail.com> * avoid repetition in the subclasses of Template darcs-hash:20070216040141-24576-f3905dae3484a294857e80a46346b0a6c00c2bca.gz [0f4c3ed | Fri Feb 16 03:01:00 UTC 2007] manveru <m.fellinger@gmail.com> * add spec/tc_dependencies to make sure we don't leak any gems into the vanilla ramaze darcs-hash:20070216040117-24576-ea93f2432ccefdd2f57b9959fa8b9a79e0e7838b.gz [43c23ad | Fri Feb 16 03:00:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding store/yaml for an abstracted version of YAML::Store + corresponding specs. darcs-hash:20070216040041-24576-8adfc7d58b18f06a645a18b885698e91136c5a5a.gz [c1abf39 | Fri Feb 16 03:49:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing the issues with send_file temporarily darcs-hash:20070216044906-40155-7a52a1c4af833d6c228204dd399235a1c17049c7.gz [0984437 | Tue Feb 13 08:39:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add specs for methods on a controller like this__is__a__method which translates to this/is/a/method darcs-hash:20070213093923-40155-f4810fbfb2b7667389749e1d367cd8b3832db139.gz [6695f27 | Thu Feb 15 13:58:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * temorarily deactivate the new template-mapping darcs-hash:20070215145848-40155-cf81d3d080f0be28bbd063eaa7d313a15e546050.gz [688d790 | Thu Feb 15 13:49:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing missing end darcs-hash:20070215144933-40155-335a2ec2ce683ade5b37a576d060a647bee840f2.gz [390a8ce | Thu Feb 15 13:48:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * autoload Element/Morpher when referenced darcs-hash:20070215144808-40155-8537769834f734d041ecc467691ce86dc25786e0.gz [2bfa688 | Thu Feb 15 09:13:00 UTC 2007] manveru <m.fellinger@gmail.com> * removing the alias of Ramaze::start to Ramaze::new to avoid nasty bugs when Ramaze is included into Object darcs-hash:20070215101331-24576-158a57d9a8587653b20a3a8144865f6218381abb.gz [cfcece7 | Thu Feb 15 09:13:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding some more docs for templating darcs-hash:20070215101304-24576-bfdc716d26bbf727bf16ad6a66afbe0a46866446.gz [ea9591b | Thu Feb 15 03:26:00 UTC 2007] manveru <m.fellinger@gmail.com> * first partial implementation of template_maps darcs-hash:20070215042622-24576-1bf16c90a346fcc05249c0034f0a653d880eaaba.gz [aaf236e | Thu Feb 15 03:19:00 UTC 2007] manveru <m.fellinger@gmail.com> * add support for actions of the double__underscore__way darcs-hash:20070215041927-24576-539cf3b572d56fa83b9084f2891dbdbc5ce95c41.gz [1e9c900 | Wed Feb 14 09:31:00 UTC 2007] manveru <m.fellinger@gmail.com> * updating FAQ darcs-hash:20070214103145-24576-51f09f8d14624298aaf65eec774fe7305cc1e7e6.gz [73e2453 | Wed Feb 14 08:46:00 UTC 2007] manveru <m.fellinger@gmail.com> * documenting another couple of classes darcs-hash:20070214094606-24576-3ed43b02817789db9f294caaa1c5fa322ee0b760.gz [a8efbc0 | Wed Feb 14 08:45:00 UTC 2007] manveru <m.fellinger@gmail.com> * documenting dispatcher fully darcs-hash:20070214094558-24576-19f01dfeb0302579fc02e501479de6e6a7ad5df2.gz [2c7c63c | Wed Feb 14 08:45:00 UTC 2007] manveru <m.fellinger@gmail.com> * documenting cache/memcached darcs-hash:20070214094548-24576-75398e87187c469aff3765cdf32e1abeef88a197.gz [8a92b28 | Wed Feb 14 08:45:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding further docs to adapter/mongrel darcs-hash:20070214094536-24576-03096ba2d40b99759af9fd7d9b7ff460b53b01e3.gz [e16ccd4 | Wed Feb 14 08:44:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing AuthHelper darcs-hash:20070214094451-24576-def8b6cfd73511bd4c91b281565d0456f3eb1bd7.gz [03887ae | Tue Feb 13 09:57:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing the examples and adapting lib/proto for the new Controller darcs-hash:20070213105752-24576-1f30799a4c5c8f3d2b5cbc870b952f53f6c22b75.gz [9d9d1ce | Tue Feb 13 09:57:00 UTC 2007] manveru <m.fellinger@gmail.com> * add xhtml as default extension for Ezamar darcs-hash:20070213105725-24576-8dd3666a3f558d237e584df58d332869788a87d6.gz [3c1b4b3 | Tue Feb 13 05:25:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing flawed references to Template::Rezamar in the docs. darcs-hash:20070213062556-24576-6c618c1372d2f187651328f21f7388500e208d5a.gz [7e2bb60 | Tue Feb 13 05:23:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing the tutorial for new implementation darcs-hash:20070213062320-24576-d5a8654c206772146a030492136bb932c92aedfb.gz [58976c5 | Tue Feb 13 05:20:00 UTC 2007] manveru <m.fellinger@gmail.com> * rescue the Timeout::Error we get when a request takes too long in a test. darcs-hash:20070213062059-24576-9e60d1e2c3911b7c874dbab9cb84c411b2b0126e.gz [59d6991 | Tue Feb 13 05:20:00 UTC 2007] manveru <m.fellinger@gmail.com> * documenting all undocumented methods, some classes/modules still lacking docs. darcs-hash:20070213062025-24576-a05dcc82d16a8f925a5ecf2f8d6da16e4a918e98.gz [a0ef675 | Tue Feb 13 05:19:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing AspectHelper and with that subsequently AuthHelper. darcs-hash:20070213061937-24576-b47ff96bab59e5438d561b809a654abadeb03daf.gz [dde0528 | Tue Feb 13 03:45:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * rewrite of spec/spec_all and fixing a typo in spec/spec_helper darcs-hash:20070213044559-40155-3da8aaf69bbfdad0949cc02da9b85347981c5c07.gz [2eea64c | Mon Feb 12 22:56:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * make example/caching|hello|simple run again darcs-hash:20070212235606-40155-9b626afff9fe734b07ee0eddec8f6ee4a17e2187.gz [ceae053 | Mon Feb 12 22:55:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * execute(*tasks) instead of execute *tasks darcs-hash:20070212235549-40155-06c92e93c293e959cca59a30d0e22d37232e014d.gz [f933680 | Mon Feb 12 22:55:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * get rid of warnings in ezamar/engine - it still should be written more elegant though. darcs-hash:20070212235510-40155-2234d344ca046ec81e2d9924571dd4661f03fb4f.gz [d0a5f39 | Mon Feb 12 22:54:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * don't require aquire twice. darcs-hash:20070212235448-40155-7bd9895b795e512280af84dc36baf1b68dc27ac0.gz [5ea3a1c | Mon Feb 12 22:53:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * had a double definition of the request_path method for webrick-requests. darcs-hash:20070212235356-40155-fe71a05b171aad1efa6dc093a2a9efd03441a288.gz [5268077 | Mon Feb 12 22:53:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * set the default of bin/ramaze and spec_all to output warnings. darcs-hash:20070212235313-40155-64ce22315d5bc71f0f66963de3a8384f70cbebe2.gz [53b03ec | Mon Feb 12 22:50:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * use our own methods for showing the usage, less hacky and avoids warnings darcs-hash:20070212235035-40155-8436e5e9605f06c244578bd7fb48e88414b0daeb.gz [01add5f | Mon Feb 12 14:19:00 UTC 2007] manveru <m.fellinger@gmail.com> * make AspectHelper not bail out at start. darcs-hash:20070212151906-24576-a89ca7c8957b00734d95d2c149b3c257f7a96872.gz [5a34601 | Mon Feb 12 14:18:00 UTC 2007] manveru <m.fellinger@gmail.com> * define #current on the actual Response-object darcs-hash:20070212151844-24576-6e5dda203be529459ae6adaf6a4122d14dd4e688.gz [34993b0 | Mon Feb 12 14:12:00 UTC 2007] manveru <m.fellinger@gmail.com> * This patch is HUGE, introducing real controllers and making the templating-engines even more uniform and modular, selection of the engine now based on file-extension or and/or a trait, fixing all tests (except AspectHelper and AuthHelper which relies on that), moving the Ezamar-engine out of the usual templating (so you can use it for your own evil plans) and quite some other stuff... this rewrite didn't work out to be very atomic, but the effects are. darcs-hash:20070212151246-24576-c6eecdba031e29f930308ee19aebfa2344bc8081.gz [c083dea | Mon Feb 12 14:11:00 UTC 2007] manveru <m.fellinger@gmail.com> * make the rdoc-tasks a bit nicer and add doc/FAQ darcs-hash:20070212151152-24576-030fe7e4ed1912a7e263e9e6d2170db678986a8b.gz [b7f5165 | Mon Feb 12 03:01:00 UTC 2007] manveru <m.fellinger@gmail.com> * add doc/FAQ darcs-hash:20070212040114-24576-82f18dcaab3f5f63fcf09fc08d89f65fe60ff33c.gz [0685043 | Mon Feb 12 01:26:00 UTC 2007] manveru <m.fellinger@gmail.com> * Ramaze::Template::Ramaze => Ramaze::Template::Ezamar - renaming the templating to get rid of confusion and provide a name to talk about when one means the templating. darcs-hash:20070212022604-24576-775738d39d6ad129a37099b55db2cf9330a86069.gz [fdb45b6 | Mon Feb 12 00:21:00 UTC 2007] manveru <m.fellinger@gmail.com> * add hint about installation to tutorial/todolist darcs-hash:20070212012156-24576-646313dc8de990a226fe433f7c05f884ceda5d25.gz [9b2f6dd | Sat Feb 10 21:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove allison from the repository again. darcs-hash:20070210222307-40155-d337073634e76d004daeb0fbc87f4be1529864eb.gz [4fcd9c9 | Fri Feb 09 19:43:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing specs for tc_helper_feed for broken hpricot darcs-hash:20070209204350-40155-5c712a1f0e79024175b1a7c899275da59935a63e.gz [4e1fafb | Fri Feb 09 19:43:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * using ramaze/store/default for proto darcs-hash:20070209204325-40155-def25b368d432a38257ff7cfb4471b69120f6c7b.gz [10fb75e | Fri Feb 09 14:02:00 UTC 2007] manveru <m.fellinger@gmail.com> * fix issue when having a symbol as Global.cache for sessions. darcs-hash:20070209150214-24576-52b92ec0f8b76c3cc40c872c77e6821ec1b8e615.gz [72105d7 | Fri Feb 09 14:01:00 UTC 2007] manveru <m.fellinger@gmail.com> * better error-handling for Template::Ramaze darcs-hash:20070209150156-24576-b3f526cc8dab56f46adaec831d03c00ce61d3243.gz [d7a938b | Fri Feb 09 14:01:00 UTC 2007] manveru <m.fellinger@gmail.com> * set @action for Template::Ramaze darcs-hash:20070209150144-24576-9e2429df9b20ec785b385f49b9e8b51a41e597c0.gz [0ac4f18 | Fri Feb 09 14:00:00 UTC 2007] manveru <m.fellinger@gmail.com> * extending Store::Default and adding corresponding specs and docs. darcs-hash:20070209150054-24576-cbcfeeaa91206614cbc0c477784cf6fe23eaed1c.gz [cd3a873 | Fri Feb 09 14:00:00 UTC 2007] manveru <m.fellinger@gmail.com> * add the doc/tutorial/todolist.txt darcs-hash:20070209150031-24576-febe5cc78b36ee8fce246ee88bb7fc60beafcf59.gz [336fb37 | Fri Feb 09 13:59:00 UTC 2007] manveru <m.fellinger@gmail.com> * add the example/todolist darcs-hash:20070209145958-24576-d8fb64d3555afc75e7181e866b5d155bf915bb7d.gz [8d57fb8 | Fri Feb 09 10:44:00 UTC 2007] manveru <m.fellinger@gmail.com> * add Store::Default#empty? darcs-hash:20070209114406-24576-65d2d89f49dfc2d01c55a1ae22fc10d321f752be.gz [8c88d64 | Thu Feb 08 03:17:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding doc/INSTALL darcs-hash:20070208041709-24576-3baa650f7e0a0b69a5623d769df121e9e105d68a.gz [93cebea | Thu Feb 08 03:14:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing and extending amrita2 templating, adding the example for it. darcs-hash:20070208041409-24576-524154c557cdf67078ec995312f29a6646828cb0.gz [b457a3f | Tue Feb 06 12:52:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing a bug in feed-helper and hiding a bug in current hpricot... (0.5) - need to file a bug-report :( darcs-hash:20070206135203-24576-bd859a1c3221351d7399ce084ad26d4f0413e200.gz [adb1f74 | Thu Feb 08 22:43:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * a bit nicer output if the test is skipped due to dependencies darcs-hash:20070208234309-40155-a68e9c1bae9843e4f608a50438392860783e8c6e.gz [28689df | Thu Feb 08 22:42:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add the testfile for send_file darcs-hash:20070208234248-40155-494fd64636cac0e829c8f1599c8e93efff362881.gz [17761d4 | Thu Feb 08 22:41:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing send_file for mongrel-adapter. darcs-hash:20070208234157-40155-c6a6a67505c18b8277f5220ffcf7f66d604251f1.gz [c19353b | Thu Feb 08 08:01:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update changelog darcs-hash:20070208090122-40155-a0a6b92716245b324b3c5dbefbb266d4a1539e6a.gz [44d7b16 | Thu Feb 08 01:18:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * this fixes some issues with rubygems/rdoc darcs-hash:20070208021846-40155-7eb6b058a584e4ff5f80523f1341e4fa50877f7b.gz [4ded418 | Thu Feb 08 00:28:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * little hack for RDoc::usage so it will work with a gem too. darcs-hash:20070208012849-40155-d996fd7230d663a55d5386b6e9bc2cc971639939.gz [57b4bbb | Wed Feb 07 15:31:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add rspec as dependency darcs-hash:20070207163146-40155-44d80dd3ae4cadc238da051e97b5394a60a80163.gz [1167004 | Wed Feb 07 15:21:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * nicer exit darcs-hash:20070207162113-40155-df9d295cf01dbaca65ddd8771d9f19f474876dfb.gz [5eec9cc | Wed Feb 07 09:37:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove foul language ;) darcs-hash:20070207103710-40155-d3900a2d2dfa6995f1084db04bde5dd849c180ed.gz [6b930f3 | Wed Feb 07 09:36:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * added :distribute task and fixed a small typo darcs-hash:20070207103604-40155-f857f67aa0dfe7d2149d789caff2fb27bc033f55.gz [2730af5 | Wed Feb 07 09:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * 0.0.6 darcs-hash:20070207100654-40155-959aa7804608a4690d217bd909199a9b1b27e5da.gz [28ce4a5 | Wed Feb 07 09:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * working around a bug in Hpricot 0.5 darcs-hash:20070207100638-40155-0b85ba280e683a28fad4779c3c7eaa44aef6d2b1.gz [e181135 | Wed Feb 07 09:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update changelog darcs-hash:20070207100624-40155-9766f1bbe70f225fdd55b1a760ca25d4ed212d12.gz [58fb698 | Wed Feb 07 09:02:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * this introduces a new startup/shutdown hook system darcs-hash:20070207100215-40155-2b7cd7831ce97f5e809ac63a8723ec78dad9ac09.gz [05b96f7 | Wed Feb 07 09:00:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update changelog, fixing Rakefile and making bin/ramaze a bit nicer. darcs-hash:20070207100052-40155-9931928eb8b767460a94db686516b4224effd4d8.gz [3322cc1 | Tue Feb 06 13:44:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing typo in Rakefile darcs-hash:20070206144403-40155-99ad8dfb6dbd593caab1f3e074766c92391f830a.gz [35dda41 | Tue Feb 06 07:29:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding documentation for all traits. darcs-hash:20070206082923-40155-a0994bd9e797cf5b3dc50380f281b7108813fd6a.gz [fab0fcb | Tue Feb 06 07:29:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * improving Hash#keys_to_sym darcs-hash:20070206082909-40155-1625f72161cf0fa43da7f091207538c62eef62f0.gz [cdf55c2 | Tue Feb 06 07:28:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding the files for the allison-template darcs-hash:20070206082842-40155-b350e1c6e2b45b71712a3ceb9214a7414a1d688d.gz [b2230f2 | Tue Feb 06 07:28:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add rake allison for the improved allison rdoc-template darcs-hash:20070206082825-40155-cb16d9e4728c6afe2c955e715a7fd089d0ffaaf4.gz [6d72cf4 | Tue Feb 06 02:42:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * fixing minor typos in the README, removing ramaze.xcf and fixing require hpricot in tc_helper_feed darcs-hash:20070206034237-40155-cb936ab4e3483df6b27781a296fadd0c979078f0.gz [1c46821 | Tue Feb 06 06:08:00 UTC 2007] manveru <m.fellinger@gmail.com> * add a post install message for the gem and add documentation for Tool::Create darcs-hash:20070206070835-24576-1beea81399731ae15d341b38d93285c680c48e95.gz [dddbd28 | Tue Feb 06 03:51:00 UTC 2007] manveru <m.fellinger@gmail.com> * handle referer for mongrel too darcs-hash:20070206045117-24576-7b753d1b8870c87852831e19353d6f3abca72462.gz [c87e1a9 | Tue Feb 06 03:50:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove the require coderay in error.rb main-body, this is done dynamically and with a proper rescue in the error-method instead, therefor removing the shown dependecy in rake dependencies darcs-hash:20070206045029-24576-d7957104a31e0a0ca8e7e124f7b085e65c7c4f3d.gz [36d16da | Tue Feb 06 03:49:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing rake rdoc, adding rake readme2html and adding rake as dependency darcs-hash:20070206044903-24576-ae6983b8519e29f6e0a0b154ff1af0a813edeab0.gz [fc0d2a5 | Sun Feb 04 13:34:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding some more methods to Store::Default darcs-hash:20070204143454-24576-9c234c67ad7fa1045848cce01a0e85c0900e3c88.gz [30e736e | Sun Feb 04 12:50:00 UTC 2007] manveru <m.fellinger@gmail.com> * finally make ramaze --create project work darcs-hash:20070204135029-24576-8bf93c67ee2d8158ce780597c8783ae544a279a3.gz [2c8fd05 | Mon Feb 05 01:30:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * minor changes to README darcs-hash:20070205023034-40155-9f0ac02adfddfbaf4ee71b7f704c7afd8060900c.gz [00da088 | Mon Feb 05 01:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding todo darcs-hash:20070205022341-40155-e6879f003de5e97da7c12e855d4aff8dccbf5180.gz [155c5c5 | Mon Feb 05 01:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update documentation for Global darcs-hash:20070205022321-40155-8fce195adb7816ebd248754a0cf031e80b9a7d75.gz [62f28a9 | Mon Feb 05 01:23:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update doc/TODO darcs-hash:20070205022313-40155-66532e27f01bc7dd6e52eab102388533252577f3.gz [5cc5311 | Mon Feb 05 01:21:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * little patch to rake todolist darcs-hash:20070205022125-40155-51285875e1ff363f3ceb3e450bc4b066cae0f039.gz [d9193e7 | Fri Feb 02 22:45:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding testcase_requires in spec_helper to have a standard way of saying whether a testcase is supposed to pass at all, also fixing a little issue with require-path for ramaze and problematic lookup of Ramaze::Helper in haml (it's extended anyway) darcs-hash:20070202234515-24576-a6b1af2822b94e4631a66aefa834720613850016.gz [ad1a12a | Fri Feb 02 22:09:00 UTC 2007] manveru <m.fellinger@gmail.com> * use proto/public for static lookup, not lib/public darcs-hash:20070202230937-24576-c301e39bdfc5ef669a4349edc847db638b876e1f.gz [28e138e | Fri Feb 02 22:09:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing logger for files darcs-hash:20070202230925-24576-0d490e9857d5b8ffcfd7202be50a2c378e67e9ba.gz [c90c753 | Fri Feb 02 22:07:00 UTC 2007] manveru <m.fellinger@gmail.com> * adds the other stuff for lib/proto, just a very simple little hello-world app with most of the structure of a fully grown application and some example configurations. darcs-hash:20070202230746-24576-951a6741faeeb38ab67daef66ba8761c13c0f721.gz [8d23609 | Fri Feb 02 22:07:00 UTC 2007] manveru <m.fellinger@gmail.com> * move lib/public to lib/proto/public darcs-hash:20070202230726-24576-e8f221f86d7722d63c1ba77501dd187916641b65.gz [616a26c | Fri Feb 02 22:06:00 UTC 2007] manveru <m.fellinger@gmail.com> * add tool/create and change the bin/ramaze for ramaze --create myapp, which basically copies the proto-directory from lib/proto darcs-hash:20070202230633-24576-1a7b51068da0077f4ecd7fa7c7e56a7cf9aa227d.gz [84b206a | Fri Feb 02 22:06:00 UTC 2007] manveru <m.fellinger@gmail.com> * uh, forgot the source of these two files darcs-hash:20070202230618-24576-edee49f544e8722f0fac10bec4b7164cecdd6224.gz [e154b6a | Fri Feb 02 22:05:00 UTC 2007] manveru <m.fellinger@gmail.com> * update Rakefile for testing and superior options for rdoc darcs-hash:20070202230501-24576-92fab41339f6644edf093624cf819c06aa605db5.gz [0e9ba62 | Fri Feb 02 22:02:00 UTC 2007] manveru <m.fellinger@gmail.com> * move lib/test/request_maker into the rake-task request darcs-hash:20070202230245-24576-474965b2a6a2de643f10dffe06e91af813a9bed2.gz [d4b2fa7 | Fri Feb 02 22:02:00 UTC 2007] manveru <m.fellinger@gmail.com> * patch the specs to work in the new directory darcs-hash:20070202230203-24576-8af58d778cf4789016c83e9c739622e394f024b0.gz [2b4e603 | Fri Feb 02 22:01:00 UTC 2007] manveru <m.fellinger@gmail.com> * move test_helper to spec/spec_helper and all_tests to spec_all darcs-hash:20070202230121-24576-4912d7b6b51af70dc9d237d365c5e03ea39be63f.gz [746eb29 | Fri Feb 02 22:00:00 UTC 2007] manveru <m.fellinger@gmail.com> * move test to spec darcs-hash:20070202230050-24576-156303e03432f775dd55549ca6375d971e362505.gz [3e5c1d7 | Fri Feb 02 18:45:00 UTC 2007] manveru <m.fellinger@gmail.com> * tons of little changes to make dispatcher work again, also adding support for defining your Global.inform_to in a YAML file ('stdout', 'stderr', :stdout, :stderr or a filename) darcs-hash:20070202194539-24576-47291eaaf56ac2b78043c3e7c2b91ab4bb835171.gz [dc8903b | Fri Feb 02 11:14:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * yet another typo darcs-hash:20070202121446-40155-0b1783d42d6999796441b84c3a5bdba1414fbbc9.gz [0a5590f | Fri Feb 02 11:13:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * typo darcs-hash:20070202121338-40155-b70023906770aceede7970cbb810cd26b6ee121f.gz [fd1d16b | Fri Feb 02 11:12:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * document String#snake_case darcs-hash:20070202121210-40155-18d6b161ebfae091ca21e155747356821afaaead.gz [5e76fa1 | Fri Feb 02 11:11:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * docu for String#camel_case darcs-hash:20070202121103-40155-93c6ac701e0673f967b22a9ce4f48dc3d17997fc.gz [31b143e | Fri Feb 02 11:07:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * MAJOR update to README ;) - now it should be a lot more RDoc-able darcs-hash:20070202120729-40155-dec31a9a29ef5bd61d0c424901db76039e4e998d.gz [22c73b8 | Fri Feb 02 10:39:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * update docs for Template::Amrita2 darcs-hash:20070202113937-40155-c1f13cae777babe5af33dab04f0d6a6d84eb2d84.gz [98fe977 | Fri Feb 02 10:37:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * remove the Template::Stupid darcs-hash:20070202113747-40155-9b695a4e8387396f61f10ed781f0a50d6ad7bec1.gz [cf14fa6 | Fri Feb 02 10:33:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * document some more snippets darcs-hash:20070202113316-40155-36f7226f5879fba29116e79c39b1c76b2b5b12f0.gz [7be5c5e | Fri Feb 02 10:24:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding docs for OpenStruct#temp darcs-hash:20070202112454-40155-4f6f1fcf25ad045284d7b3ac988c6cc588dc607a.gz [8547605 | Fri Feb 02 10:20:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * add the last bits of code and documentation for request/response/session (mostly the ::current method) darcs-hash:20070202112046-40155-cda3644f432692d927aa74715265c553ba047bc1.gz [5ef95dc | Fri Feb 02 10:20:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * a little bit nicer API in Dispatcher, but most importantly, fully documented! darcs-hash:20070202112007-40155-ad930839e0cc40851158720b11ad438e1d28f09c.gz [a3b58e0 | Thu Feb 01 07:26:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * something broke... now reading the template extra-early... this should give us better ways to do action-compiles later on... darcs-hash:20070201082641-40155-e57a5740226916373935987b20f9f92010f9d01b.gz [23e247f | Thu Feb 01 06:48:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * Ramaze::Template::Element => Ramaze::Element darcs-hash:20070201074813-40155-0799de2cc03f8f88fc4010fe4e6720d6996e2073.gz [b64e104 | Fri Feb 02 04:32:00 UTC 2007] manveru <m.fellinger@gmail.com> * first draft of documentation for dispatcher darcs-hash:20070202053226-24576-d939fa4c0b1b587396f6ec6b4b9bc79fef49292e.gz [696c3b2 | Fri Feb 02 04:24:00 UTC 2007] manveru <m.fellinger@gmail.com> * completing documentation of ramaze.rb and lib/test/test_helper darcs-hash:20070202052448-24576-ff374ec375721b68d62233e93821b25bd604877e.gz [a489ae9 | Fri Feb 02 04:24:00 UTC 2007] manveru <m.fellinger@gmail.com> * completing documentation for Ramaze::Template darcs-hash:20070202052419-24576-4a534476bcf808bf6c3340685cecd7a928d369fa.gz [4653247 | Fri Feb 02 04:24:00 UTC 2007] manveru <m.fellinger@gmail.com> * minor changes and full documenation for Gestalt darcs-hash:20070202052407-24576-7e4e31f2620ed81f00ba6f49164bca2b7c218b6e.gz [3c20ef6 | Fri Feb 02 04:23:00 UTC 2007] manveru <m.fellinger@gmail.com> * completing documentation of adapter/mongrel adapter/webrick darcs-hash:20070202052342-24576-2afb8771c7513aff81d47752b07fca833ebd1bde.gz [0372ffb | Fri Feb 02 04:01:00 UTC 2007] manveru <m.fellinger@gmail.com> * taking advantage of a custom external config-file... i won't build an automatic loading of that file since it's just a oneliner to load it. this is for the blog-example darcs-hash:20070202050144-24576-5c66c74ce510c96c29bcf1c01ea8fcdcd2dd9ae0.gz [746db63 | Fri Feb 02 04:01:00 UTC 2007] manveru <m.fellinger@gmail.com> * support for mapping controllers as symbols/strings, looking up the constants on startup. darcs-hash:20070202050101-24576-7518fdf968496f18cc61e32297551f71c4fd0492.gz [8137e94 | Thu Feb 01 12:47:00 UTC 2007] manveru <m.fellinger@gmail.com> * testing redirect_referer in tc_helper_redirect darcs-hash:20070201134706-24576-ddc8dec75a438380bf6e994032f9f067f33734a5.gz [f7fb9d6 | Thu Feb 01 12:46:00 UTC 2007] manveru <m.fellinger@gmail.com> * updating tc_helper_auth for the different ways to set the auth_table darcs-hash:20070201134616-24576-544c3c96e92eb7d65bb76cdbdf8213f26e9876b5.gz [9082aed | Thu Feb 01 12:45:00 UTC 2007] manveru <m.fellinger@gmail.com> * this adds the possibility to add a base url for the context (like path to a controller)... nasty, nasty stuff darcs-hash:20070201134530-24576-cd9afe40de15b383a5b98f151db77420eba8e656.gz [2f384a0 | Thu Feb 01 12:45:00 UTC 2007] manveru <m.fellinger@gmail.com> * make rake all_tests compatible for tinderbox and a little bit prettier darcs-hash:20070201134501-24576-9e837b755ace3f6cb5c9a2b1aaf7caf87b6f4d20.gz [10328a9 | Thu Feb 01 12:44:00 UTC 2007] manveru <m.fellinger@gmail.com> * use request.referer and add request.local_net? from nitro darcs-hash:20070201134415-24576-508578747821f0af4040734c9aa4f918909c0f3a.gz [39b4389 | Thu Feb 01 12:43:00 UTC 2007] manveru <m.fellinger@gmail.com> * restructuring and documenting AuthHelper darcs-hash:20070201134332-24576-9d8b0f74e5b12fe9aa6782ab4d77aadf8d9a92c7.gz [bed4ade | Thu Feb 01 12:43:00 UTC 2007] manveru <m.fellinger@gmail.com> * use ancestral_trait for aspects darcs-hash:20070201134311-24576-8167b1a3a4c943de108ced80458e306ba0ca4395.gz [518ce8e | Thu Feb 01 12:42:00 UTC 2007] manveru <m.fellinger@gmail.com> * add documentation for the Rakefile tasks darcs-hash:20070201134253-24576-8c7bc8f68d36b77a48465b1727313472ae51c868.gz [c1891b0 | Thu Feb 01 10:40:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove a bit of debugging-info from AspectHelper darcs-hash:20070201114042-24576-938a0e81bd311131720bd534f5e81bf76f44ebce.gz [ef1caff | Thu Feb 01 10:39:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding stack functionality in the AuthHelper by default. So once you are logged in, you will be redirected back to the last known position. darcs-hash:20070201113936-24576-c6a05aef67ede351cc3b5f89c05f4d50df54309a.gz [69b7603 | Thu Feb 01 10:39:00 UTC 2007] manveru <m.fellinger@gmail.com> * simplify the code in helper.rb a little bit darcs-hash:20070201113905-24576-4e6d42240723b4c1bd4b09b6232b672673d81f2c.gz [5a1e4e3 | Wed Jan 31 12:33:00 UTC 2007] manveru <m.fellinger@gmail.com> * small updates to the README again, adding some links. darcs-hash:20070131133316-24576-880d1e9594a126a331a046ee178b3c3ab4226a9c.gz [e4d776a | Wed Jan 31 12:22:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding the Liquid templating-engine (Template::Liquid) complete with tests and example. darcs-hash:20070131132235-24576-94661b0ed61f794223734cb90383af280572c874.gz [8ff3793 | Wed Jan 31 12:19:00 UTC 2007] manveru <m.fellinger@gmail.com> * little fixes for Haml (examples/templates) and adding the option to pass your own haml_options or set a trait... also some docs for transform. darcs-hash:20070131131959-24576-fc4d927b7f6dbcec5a8c075f74c91fc287e3f2e8.gz [3e2c835 | Wed Jan 31 03:35:00 UTC 2007] manveru <m.fellinger@gmail.com> * another Inform => Informer for erubis and amrita2 darcs-hash:20070131043506-24576-c7dd24afb7c2aa15a7b81af091ff164a9933448f.gz [69bca2f | Wed Jan 31 03:34:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding Haml example in examples/templates darcs-hash:20070131043418-24576-ca053d6edb0bbe801707e20caab9bcc34f78ab79.gz [fa89cc1 | Wed Jan 31 03:06:00 UTC 2007] manveru <m.fellinger@gmail.com> * updating README darcs-hash:20070131040647-24576-23354e8ad60f5267dccca56ff6d8a1b66d33e10d.gz [9b1c170 | Wed Jan 31 03:05:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding Haml Templating-engine. (Template::Haml) darcs-hash:20070131040526-24576-9b63997061b7275f8d6e6c6f515888eff7b27aca.gz [149ccf4 | Tue Jan 30 15:09:00 UTC 2007] manveru <m.fellinger@gmail.com> * add a tc_error darcs-hash:20070130160922-24576-b261054d7a025d5397c28697255a9d5b3589105a.gz [e9bd2b5 | Tue Jan 30 15:06:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing Element => Template::Element darcs-hash:20070130160650-24576-3fdcad46d29db7dac9742dccdf9c959a5b8605a9.gz [fde057a | Tue Jan 30 12:58:00 UTC 2007] manveru <m.fellinger@gmail.com> * limiting the backtrace for the errorpage to 0..20 to make it speedier, requiring coderay darcs-hash:20070130135816-24576-c10a7c19c75dab81a3764adc57aa5c6747003898.gz [e7ecbf8 | Tue Jan 30 12:57:00 UTC 2007] manveru <m.fellinger@gmail.com> * putting Element and Morpher in the Ramaze::Template namespace, prefixing the Ramaze::BASEDIR darcs-hash:20070130135728-24576-950fe34569e22d56fcecfbcff0cefca9a663cc2c.gz [fbe0881 | Tue Jan 30 12:57:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing dispatcher errorhandling for webrick... was broken, as usual. darcs-hash:20070130135700-24576-422300b0d972204974dc66d76e005384053abb7d.gz [d4ed72f | Tue Jan 30 12:56:00 UTC 2007] manveru <m.fellinger@gmail.com> * adapt the errorpage and give it really neat new CodeRay highlighting, the old one was b0rken ages ago. darcs-hash:20070130135626-24576-eade02d0c0bd5acb76420366bb3017ad7ffe4e27.gz [2e08ef8 | Tue Jan 30 11:42:00 UTC 2007] manveru <m.fellinger@gmail.com> * use Informer in the templating to avoid confusion with the error method on the controller and of Inform (which will need to search for a new naming-scheme, i fear) darcs-hash:20070130124215-24576-162c03c18339ca7c297e9bef1635261e160e1255.gz [9e44561 | Tue Jan 30 11:41:00 UTC 2007] manveru <m.fellinger@gmail.com> * template.rb gets a new trait, the :public which points per default to ramazes public directory, we extend the paths searched to this directory, some more general cleanup as well. darcs-hash:20070130124106-24576-7ce4794f753a52f8f1c0ec1d8c529bcf53e5a153.gz [11cc551 | Tue Jan 30 11:39:00 UTC 2007] manveru <m.fellinger@gmail.com> * just a little nicety ;) darcs-hash:20070130123913-24576-0f4ddd7be71b573d8945c4fabe3251f6a2df3810.gz [95720ca | Tue Jan 30 11:38:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove the old errorpage-cruft from the error.rb, it will in future serve for some general errors that Ramaze will use. darcs-hash:20070130123824-24576-d7f57873b3745ae816ff526ba440a67fc6a6a73a.gz [424153c | Tue Jan 30 11:37:00 UTC 2007] manveru <m.fellinger@gmail.com> * make dispatcher aware of error-handling (not just that hardcoded errorpage-stuff darcs-hash:20070130123752-24576-e8c877bf3d47ef2aec858bb07faddb50cb0aafd0.gz [8d9a5ad | Tue Jan 30 11:37:00 UTC 2007] manveru <m.fellinger@gmail.com> * create the new error.xhtml and error.css in order to finally get some sane structure in error-handling. darcs-hash:20070130123700-24576-836141ff9c76efd5b23dcb2efa00a1d00cc72f94.gz [b0f7977 | Tue Jan 30 10:00:00 UTC 2007] manveru <m.fellinger@gmail.com> * show the error-message as well when Template.transform fails. darcs-hash:20070130110037-24576-d5912bb3d13e83f6b69cd0322555adfd4f7bb437.gz [d6a8245 | Tue Jan 30 10:00:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove Template from the pipeline again, just causing problems with multiple evaluation. darcs-hash:20070130110010-24576-0a586fc8642b8b8e9371a0ba0cde028a344a592c.gz [3183dfe | Tue Jan 30 09:59:00 UTC 2007] manveru <m.fellinger@gmail.com> * splitting out Element.transform into multiple methods, this is the preparation to make it a bit more... itelligent :) darcs-hash:20070130105915-24576-f857da21ced2d144d8bda717df0e43053f350325.gz [f6d5463 | Mon Jan 29 13:59:00 UTC 2007] manveru <m.fellinger@gmail.com> * _yet_ another way how webrick handles cookies... this is getting tiresome :P darcs-hash:20070129145938-24576-47c824088167e58de83db2b5a69623ccb89b5ca1.gz [70a975f | Mon Jan 29 13:59:00 UTC 2007] manveru <m.fellinger@gmail.com> * if the action is a symbol convert to string before escaping darcs-hash:20070129145914-24576-4f802d08d65bd58b90022d770769bf2e17fd7db9.gz [0ec1a6a | Mon Jan 29 13:58:00 UTC 2007] manveru <m.fellinger@gmail.com> * changes to morpher and rearranging the pipeline... evaluating twice should be avoided somehow... darcs-hash:20070129145826-24576-9c890042dc1d2eec8f1b7fa0f0a22f86fa1e4707.gz [2c9b152 | Mon Jan 29 13:57:00 UTC 2007] manveru <m.fellinger@gmail.com> * vast upgrade of AuthHelper darcs-hash:20070129145759-24576-0c27649db00dc3fae45c5f7a280716f00eb28f47.gz [ecc8776 | Mon Jan 29 13:57:00 UTC 2007] manveru <m.fellinger@gmail.com> * support different arity for pre-aspects darcs-hash:20070129145730-24576-21e444be3f99e86dea73987e1503e4e4a63a88c6.gz [77f7728 | Mon Jan 29 13:57:00 UTC 2007] manveru <m.fellinger@gmail.com> * final version of the blog (for the time being, as always ;) darcs-hash:20070129145711-24576-fd5326ea9833fac1499800f6b341542e56c12125.gz [c15eab2 | Mon Jan 29 12:32:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove the pointers to EntryController and remove the list.xhtml darcs-hash:20070129133200-24576-03932278237fb360a0abcfc70261dcbf67d50214.gz [4660762 | Mon Jan 29 12:28:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove the EntryController and use MainController instead darcs-hash:20070129132849-24576-ef49dcde3779b1409490983633533728ece280c0.gz [0673e72 | Mon Jan 29 12:27:00 UTC 2007] manveru <m.fellinger@gmail.com> * move the templates for the wiki to the root template-folder darcs-hash:20070129132705-24576-3f541202d7836f576da6e4f8f36caff5d5c2cf4d.gz [ddda972 | Mon Jan 29 12:25:00 UTC 2007] manveru <m.fellinger@gmail.com> * use the cleaner Global.setup instead of direct assignment darcs-hash:20070129132538-24576-22268aa3edc2f1d15bcf51f9d0c20d4204a83214.gz [61f8b74 | Mon Jan 29 12:25:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing session for non-POST darcs-hash:20070129132520-24576-7e17bcd8609f50469c74edf7a9f8cd93fd13cd60.gz [727bf88 | Mon Jan 29 12:24:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove the old index of blog, we'll implement that more minimalistic darcs-hash:20070129132444-24576-bf67fb336e42d84aaba446b0952dc10d65b8f97a.gz [6a0d1f7 | Mon Jan 29 12:17:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove miniwiki and move microwiki to whywiki darcs-hash:20070129131727-24576-a66575f778bd1da20ca04d728aa387a74ae3415c.gz [8de56bc | Mon Jan 29 11:22:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * huuge patch (kinda) to support cookies via POST with Net::HTTP to webrick, improves some tests and remove tc_helper_crud darcs-hash:20070129122246-40155-a4c5ef5aecb0f5388a2fdbec09c13a54d1a9d8ca.gz [8265d7b | Mon Jan 29 11:22:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * prevent stack from answering if the stack is empty darcs-hash:20070129122224-40155-42feff85adbb40ddb9ad1ed145a21e1419f912bf.gz [bc5c9f9 | Mon Jan 29 11:22:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * little typo, forgot comma ;) darcs-hash:20070129122206-40155-f305e08dd0cf53137467bd0c82af9cc231a8b2c9.gz [fa4fe33 | Mon Jan 29 10:13:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * removing the CrudHelper stuff again, it's just confusing and quite worthless in practice. darcs-hash:20070129111357-40155-ac3b80fe5606fa79cea9f56fa623f4a13864a4ce.gz [d3bc011 | Mon Jan 29 10:10:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * little fix in tc_helper_form in case Og isn't there. darcs-hash:20070129111002-40155-bd6063fe7aec18a3e66df1139a2cb8e7564a8e7c.gz [19f4e27 | Mon Jan 29 10:09:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * as promised, using throw(:respond) now to do redirection properly darcs-hash:20070129110927-40155-c2541632d3bcf041bdefb977a1afcada58a5c91f.gz [21a266c | Mon Jan 29 10:07:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding a new option Global.cookies to turn sending cookies on and off... also we are now catching :respond to break out of a request/response cycle early (this will be used for redirection) darcs-hash:20070129110739-40155-6500d52900a8b59581f84084113562f285f938c2.gz [2725a13 | Mon Jan 29 10:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * alias Ramaze.start with Ramaze.new darcs-hash:20070129110636-40155-b78138ed93b50f1f71294485f5eae2eaa0b92375.gz [2ef5ecc | Mon Jan 29 10:06:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * a little more explanation in the examples/hello darcs-hash:20070129110613-40155-240856bf0eb27e11e8da1d0014f8b586f61c100e.gz [1d10e72 | Mon Jan 29 10:05:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * adding ramaze --console for starting up an irb-session while the server runs in the background darcs-hash:20070129110539-40155-7f6f052ddaa1afa69f8180784fe7d7731fc765cc.gz [7af7e23 | Mon Jan 29 06:41:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * Ramaze.autoreload instead of Kernel.autoreload darcs-hash:20070129074105-40155-785b2fa8836a78c102bb601beceb5fa63f85312b.gz [4d3bd5f | Sun Jan 28 21:49:00 UTC 2007] manveru <m.fellinger@gmail.com> * small change to make ancestral_trait work for the current instance as well. darcs-hash:20070128224946-24576-42523555640d444930f5f4bc3399c703fed7fbb6.gz [0f5c701 | Mon Jan 29 05:03:00 UTC 2007] manveru <m.fellinger@gmail.com> * the adapter should return only one thread to watch... darcs-hash:20070129060328-24576-466a0627a229e8630b644c8428da8166bc30b804.gz [f7d7932 | Mon Jan 29 04:56:00 UTC 2007] manveru <m.fellinger@gmail.com> * implement multiple ports for webrick + tests darcs-hash:20070129055606-24576-89a120f7641405570fe02a8f7e5a81a94fdaa392.gz [c79396a | Mon Jan 29 04:55:00 UTC 2007] manveru <m.fellinger@gmail.com> * implement for mongrel + tests darcs-hash:20070129055546-24576-9893f32f041667ceea3c833e00be40146f6d5de1.gz [89c5bc8 | Mon Jan 29 04:54:00 UTC 2007] manveru <m.fellinger@gmail.com> * first step in supporting startup for multiple servers at once (ramaze -p 7000..7010) via a new Global.ports that is taken from Global.port (which loses in significance... but it's only of value before startup anyway darcs-hash:20070129055424-24576-59c787f82c60f2535904e0bdae9f670dc1e9f4da.gz [40e27be | Sun Jan 28 05:46:00 UTC 2007] manveru <m.fellinger@gmail.com> * add documentation and fix minor bugs in ramaze, ramaze/global and ramaze/inform darcs-hash:20070128064611-24576-0dc0311f651522770f0bcb31a13b20388ba9f3a9.gz [b141ae6 | Sun Jan 28 05:34:00 UTC 2007] manveru <m.fellinger@gmail.com> * document ramaze/template and remove the require of ramaze/model darcs-hash:20070128063408-24576-97d41106d08d1acb12e035194827db25a3bb443a.gz [db5b6e2 | Sun Jan 28 05:33:00 UTC 2007] manveru <m.fellinger@gmail.com> * it should be :transform_pipeline, not :template_pipeline darcs-hash:20070128063341-24576-752d2aeca905a245c6e516a49fdb410e91acacf7.gz [bdbb8d7 | Sun Jan 28 05:29:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove lib/ramaze/model.rb - nowhere used anyway :P darcs-hash:20070128062935-24576-02fada48e1eda356be89f66fbd423367b8762969.gz [d5cd312 | Sun Jan 28 05:27:00 UTC 2007] manveru <m.fellinger@gmail.com> * documentation for adapter/mongrel, adapter/webrick, AuthHelper and CacheHelper darcs-hash:20070128062730-24576-928d3c2f5a2d1c22c91ffe6bd1dda721fa767821.gz [ff7b06d | Sun Jan 28 05:22:00 UTC 2007] manveru <m.fellinger@gmail.com> * set the default method for mongrels log-method to Informer#<< darcs-hash:20070128062224-24576-133fca66573a56f6c6ded2d2515bbd6fa983f816.gz [b2d78e0 | Sun Jan 28 05:01:00 UTC 2007] manveru <m.fellinger@gmail.com> * documentation for: FeedHelper, StackHelper and FormHelper darcs-hash:20070128060137-24576-ba38ef71ae7b6a7dd9cd272f382e3d6f4493ab77.gz [cb93387 | Sun Jan 28 04:28:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove #instance? was a nice hack but we don't use it anywhere darcs-hash:20070128052800-24576-c4755add980ff49d9972f1b57e002bf0589770e8.gz [b43c50f | Sun Jan 28 04:27:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing rake undocmented... missed out some methods and added some too much darcs-hash:20070128052703-24576-d970e7e79c613a6d613de0698a469685b21621f3.gz [dc91fd6 | Sun Jan 28 04:25:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove test/tc_helper, it was just a copy of test/tc_helper_redirect ... makes my autocomplete a little bit faster ;) darcs-hash:20070128052514-24576-8122c9a4f185f779395753d2b2721ca073318318.gz [a763d81 | Sun Jan 28 04:24:00 UTC 2007] manveru <m.fellinger@gmail.com> * use head instead of @head in the response darcs-hash:20070128052453-24576-11ffa37d62ddc84a268b94458d7bb34a95563fd0.gz [b76fcb5 | Sun Jan 28 04:24:00 UTC 2007] manveru <m.fellinger@gmail.com> * template/ramaze uses render_action instead of render_method... another ancestral_trait darcs-hash:20070128052400-24576-af270d647e45ce1a7bef01e0f132ee822e6a1b2f.gz [2a73aa7 | Sun Jan 28 04:23:00 UTC 2007] manveru <m.fellinger@gmail.com> * docs for template/markaby darcs-hash:20070128052343-24576-96253659d877891b493f20c4f03f0f79f62d012b.gz [5dffc58 | Sun Jan 28 04:23:00 UTC 2007] manveru <m.fellinger@gmail.com> * replace the clumsy ancestors_trait by ancestral_trait darcs-hash:20070128052314-24576-e184cbb339a1ebb8848cda59c35cb216cda5559b.gz [8ceb91c | Sun Jan 28 04:22:00 UTC 2007] manveru <m.fellinger@gmail.com> * a little bit of docs for store/default - still pondering about removing it since it's not used anywhere... also remove the [] and []= method, they should be handled by method_missing anyway. darcs-hash:20070128052228-24576-0f4f5f9ee2f24c858fcfe517dedb0441bf742714.gz [897b9d2 | Sun Jan 28 04:21:00 UTC 2007] manveru <m.fellinger@gmail.com> * changes for Object#trait, adding docs and replacing the ancestors_trait with the ancestral_trait method, it yields an hash that consists of all the traits of the ancestors darcs-hash:20070128052107-24576-6a8f8683f27f2456e6fac94f813f1c65dbc04bb1.gz [c7688b4 | Sun Jan 28 04:20:00 UTC 2007] manveru <m.fellinger@gmail.com> * Ramaze::Informer instead of Ramaze::Inform for autoreload output darcs-hash:20070128052024-24576-c53ff8cc9d489c69726e84ed866036e765da87c6.gz [5ba7f05 | Sun Jan 28 04:20:00 UTC 2007] manveru <m.fellinger@gmail.com> * make Informer respond to << for WEBrick darcs-hash:20070128052010-24576-acb4b3ac915e2b7279b0230282b1d6d896fd4452.gz [cc17a79 | Sun Jan 28 04:19:00 UTC 2007] manveru <m.fellinger@gmail.com> * it's Global.inform_ ... no Hash anymore for easier defaults darcs-hash:20070128051910-24576-b0d26706c8f797f8bbe068872163f8097153ac09.gz [f947216 | Sun Jan 28 04:18:00 UTC 2007] manveru <m.fellinger@gmail.com> * new defaults for Global plus a little bit of documentation-stubs... we really should make a seperate documentation in doc/ for the options. darcs-hash:20070128051824-24576-4a0e04dab2fe9c7461dba7beecad5ff324895244.gz [4ac9447 | Sun Jan 28 04:17:00 UTC 2007] manveru <m.fellinger@gmail.com> * check for the :benchmark tag in the adapter darcs-hash:20070128051704-24576-a05f7d1ba95b836e34875fb3da42231ecbbedfb3.gz [a5f523e | Sun Jan 28 04:16:00 UTC 2007] manveru <m.fellinger@gmail.com> * make mongrel log as #debug instead of info darcs-hash:20070128051642-24576-919846fd193f51f7a0d5dd5ba83dad522d007651.gz [cc8f903 | Sun Jan 28 04:16:00 UTC 2007] manveru <m.fellinger@gmail.com> * Global.autoreload is now a simple integer, no mapping of modes to integers, since we don't have modes anymore darcs-hash:20070128051613-24576-ec7a856d9d1e6aaacb04e17012dff2e01c916fa1.gz [dc35259 | Sun Jan 28 04:15:00 UTC 2007] manveru <m.fellinger@gmail.com> * close the thing Inform logs to at shutdown darcs-hash:20070128051530-24576-a5b734e727e78b5f9aade1029ca00328e6b94793.gz [a925b42 | Sun Jan 28 04:14:00 UTC 2007] manveru <m.fellinger@gmail.com> * small change, in case the adapter doesn't respond to #stop darcs-hash:20070128051440-24576-2312a528fb8ca95e56590425439035e8052f7eaa.gz [7cee643 | Sun Jan 28 04:13:00 UTC 2007] manveru <m.fellinger@gmail.com> * little change in examples/element darcs-hash:20070128051330-24576-6f37fedf4c8dd74f8f4a1b093e27422102629e86.gz [d1247de | Sun Jan 28 04:12:00 UTC 2007] manveru <m.fellinger@gmail.com> * adjust the bin/ramaze for the new Inform and use RDocs parser for the output of help, version and copyright. darcs-hash:20070128051218-24576-8f9fbc2043a4ebafe09abf7c1535f8c72ce48fe1.gz [6b85400 | Fri Jan 26 13:22:00 UTC 2007] manveru <m.fellinger@gmail.com> * typo darcs-hash:20070126142253-24576-5ae54817371b5928daa59a4c49b6afc2908b0721.gz [7c0157f | Fri Jan 26 13:22:00 UTC 2007] manveru <m.fellinger@gmail.com> * move init_global a bit forward so it's available right from the start. darcs-hash:20070126142220-24576-d023b87c298f42ad24ad7afe322549d1d07eea2b.gz [10959ce | Fri Jan 26 13:21:00 UTC 2007] manveru <m.fellinger@gmail.com> * update the Global for the new Inform darcs-hash:20070126142129-24576-2e2e18f0ee3c3e73011bef9159335aa88a163e16.gz [a3442a1 | Fri Jan 26 13:20:00 UTC 2007] manveru <m.fellinger@gmail.com> * patch the rest of the system for the new Inform darcs-hash:20070126142041-24576-1cc476303c8ea497138624708baf90786a041eff.gz [eb30195 | Fri Jan 26 13:19:00 UTC 2007] manveru <m.fellinger@gmail.com> * rewrite Inform to be tag-based and a lot simpler :) darcs-hash:20070126141948-24576-06e1f603efd9c4d23a0c4f66f3b57384a6bccb50.gz [8d43df5 | Fri Jan 26 03:52:00 UTC 2007] manveru <m.fellinger@gmail.com> * finally set a default mapping to {} at require Global darcs-hash:20070126045242-24576-a108da26923ef48b047b385e0415c82e978f400f.gz [e6dc99e | Fri Jan 26 03:52:00 UTC 2007] manveru <m.fellinger@gmail.com> * prevent errors in case we pass Coderay some empty piece of code darcs-hash:20070126045217-24576-30e2351f51e122e6c66bbb6af432c0b4998c51c5.gz [bd69adc | Fri Jan 26 03:51:00 UTC 2007] manveru <m.fellinger@gmail.com> * supporting mongrels send_file, should give some decent speedups. darcs-hash:20070126045113-24576-f666e607a35b6658cc76518d931c42763e1555fe.gz [c47001c | Thu Jan 25 03:52:00 UTC 2007] manveru <m.fellinger@gmail.com> * append a newline to the output of CrudHelper... makes CLI-use easier darcs-hash:20070125045255-24576-cb85453c73c45dc7c1c22874569c991bf6957dfd.gz [796e680 | Thu Jan 25 03:52:00 UTC 2007] manveru <m.fellinger@gmail.com> * add the examples/crud.rb to show how to use the CrudHelper darcs-hash:20070125045220-24576-eaac3ff7f85fb2b76b07aa1ccb5c1309c05d24a1.gz [48b202b | Wed Jan 24 10:28:00 UTC 2007] manveru <m.fellinger@gmail.com> * for subsequent starts of ramaze in tests we finally have the :fake_start option that updates the Global but doesn't do much else, so that the original instance can just continue to work, i like the implementation... but our Global slowly gets stuffed :) darcs-hash:20070124112855-24576-e35bd36b3bdefe42e2a7895973e33a543ce9ca2a.gz [65b2902 | Wed Jan 24 10:26:00 UTC 2007] manveru <m.fellinger@gmail.com> * big change also to the way Global is set up, new method init_global on Ramaze that sets up the Global as usual but now also preserves the mappings set before the start of ramaze and just adds new mappings that you pass on start, gives the CrudHelper the ability to set up a mapping for your Store... you can change the name of the mapping with 'crud => YourStore, :name => "blah"' which maps to /blah... darcs-hash:20070124112616-24576-978a548da5195e5590442521199ac378841a79fa.gz [70ebb94 | Wed Jan 24 10:22:00 UTC 2007] manveru <m.fellinger@gmail.com> * rewrite of CrudHelper, now it only converts your Store into a kind of Controller, extends it with Trinity and defines the ::handle_request method (yay for ducktyping), it just sets up a proxy and you can define your own 'route', which request should send what method. darcs-hash:20070124112241-24576-f20a20daeb235937e04f4459c8a76b4e231a1b02.gz [d788267 | Wed Jan 24 04:50:00 UTC 2007] manveru <m.fellinger@gmail.com> * introduce custom morphs and add even more docs... ratio must be 2:1 by now :) darcs-hash:20070124055015-24576-fee62cf7c7c46df1dd8c3d55b4a2c8613d23048b.gz [23ad621 | Tue Jan 23 11:09:00 UTC 2007] manveru <m.fellinger@gmail.com> * adding documentation for Morpher#transform and making the rescue a lot better. darcs-hash:20070123120916-24576-699c640f0a78c8549ed16d7d99fc90be252f9e9a.gz [9a96cfa | Tue Jan 23 10:34:00 UTC 2007] manveru <m.fellinger@gmail.com> * rearrange tc_heper_form to resemble tc_morpher in regard to the require-failsafe darcs-hash:20070123113433-24576-4e7a8efef0ad3a0503f96132dde700d024b1ba2c.gz [1ac38ab | Tue Jan 23 10:32:00 UTC 2007] manveru <m.fellinger@gmail.com> * add template/ramaze/morpher and tests for it, it requires hpricot at the moment but got a graceful fallback that just won't process morphers... maybe i can whip up a pure ruby variant later, but the code using hpricot is just sweet :) darcs-hash:20070123113232-24576-549a431ca699e17da1f79d6523f7cc05bdf60f67.gz [57348d9 | Tue Jan 23 10:30:00 UTC 2007] manveru <m.fellinger@gmail.com> * add test for headers in tc_request and add a method for raw_get that gives you the original object from open() back darcs-hash:20070123113041-24576-ba3208f41902b034f445bb26c754ae52d6cd5947.gz [10a13ea | Sat Jan 20 17:16:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove cruft from helper/feed darcs-hash:20070120181656-24576-99a33e2479a492a2b206fb764ad6b87ee1d9a975.gz [b785197 | Mon Jan 22 11:25:00 UTC 2007] manveru <m.fellinger@gmail.com> * CrudHelper and testcase darcs-hash:20070122122519-24576-bb3d5073f6c4784cd5d41316077d0539c86d896a.gz [2d6fa90 | Mon Jan 22 09:56:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing tons of typos in the README darcs-hash:20070122105621-24576-53703676eaa3337aa686dbc3d356025fbc39686c.gz [8d4f4fd | Mon Jan 22 09:46:00 UTC 2007] manveru <m.fellinger@gmail.com> * fail gently on require rubygems... we probably should remove that requires completly... darcs-hash:20070122104642-24576-5a249aaf8c19c24d3687888a4d6a4b0430513078.gz [f774bc9 | Mon Jan 22 07:39:00 UTC 2007] manveru <m.fellinger@gmail.com> * add some more tests for the previous bug (request.params instead of request.query) darcs-hash:20070122083932-24576-dcecaf33c8b19d77dcb6cb481bf92580cc1b7806.gz [fb771ca | Mon Jan 22 07:32:00 UTC 2007] manveru <m.fellinger@gmail.com> * fix request[key] and request[key] = value darcs-hash:20070122083228-24576-fc065f9c33f6709d3aa4c02b22c82d355ce6a84c.gz [504d386 | Mon Jan 22 07:28:00 UTC 2007] manveru <m.fellinger@gmail.com> * add an example for the usage of Element in examples/element.rb darcs-hash:20070122082843-24576-c2dffa74378a182b2db419317297094d57bb0f44.gz [8e78daf | Mon Jan 22 04:45:00 UTC 2007] manveru <m.fellinger@gmail.com> * make tc_request pass again, request.body.read instead darcs-hash:20070122054516-24576-d09d43cb77489a5b3c8078ba0970e5a1b39ed35f.gz [dc2f359 | Mon Jan 22 04:42:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing helper/feed darcs-hash:20070122054259-24576-26061b2a420e4d6bd35e8c081e84f3b3e4ff0fc1.gz [22e4715 | Mon Jan 22 04:40:00 UTC 2007] manveru <m.fellinger@gmail.com> * add exitstatus checking for all_tests darcs-hash:20070122054010-24576-7b6e6f49733eb0cfe1c3eeba4bc31e39cadc39d8.gz [a791815 | Mon Jan 22 04:37:00 UTC 2007] manveru <m.fellinger@gmail.com> * reimplementation of Element, making code a bit cleaner (but longer... and possibly harder to understand?) also adding some tests for <Element /> darcs-hash:20070122053725-24576-73c813eecfcdfa84c766cce63a1d30d09620b722.gz [ac25b71 | Fri Jan 19 11:39:00 UTC 2007] manveru <m.fellinger@gmail.com> * document lib/test/test_helper darcs-hash:20070119123952-24576-348a50faf0dba69411d8ebf0247ff095dd7bb1a0.gz [527fddd | Fri Jan 19 11:39:00 UTC 2007] manveru <m.fellinger@gmail.com> * document lib/test/all_tests darcs-hash:20070119123931-24576-eda376ed3223200ee3220510b49893969e6bf07f.gz [0ccddd7 | Fri Jan 19 11:39:00 UTC 2007] manveru <m.fellinger@gmail.com> * document tool/tidy darcs-hash:20070119123915-24576-9eb7937f1dc9aa9a47ed064141aa6da873052674.gz [df2cb76 | Fri Jan 19 11:38:00 UTC 2007] manveru <m.fellinger@gmail.com> * complete documentation of template/ramaze/element darcs-hash:20070119123855-24576-012ffb2a637e66553a590dc83775d50246690cb6.gz [6a34113 | Fri Jan 19 11:38:00 UTC 2007] manveru <m.fellinger@gmail.com> * add/remove documentation from snippets/kernel/self_method darcs-hash:20070119123823-24576-05bf11c0f907927c901158ad9a0429bc9328b029.gz [a0fcb31 | Fri Jan 19 11:13:00 UTC 2007] manveru <m.fellinger@gmail.com> * change rake uncommented to rake undocumented darcs-hash:20070119121330-24576-79b5352919b51e2b49d22485b3b0addd6b28390e.gz [5bf3819 | Fri Jan 19 11:12:00 UTC 2007] manveru <m.fellinger@gmail.com> * document all of Inform darcs-hash:20070119121226-24576-1478c2fd4ad508b34291144353e5c2d268f01565.gz [cc10bd7 | Fri Jan 19 11:07:00 UTC 2007] manveru <m.fellinger@gmail.com> * document all of Trinity darcs-hash:20070119120727-24576-b18c442caaccc22b928d8e1a06dd7215e63ed246.gz [dc9f7a5 | Fri Jan 19 11:07:00 UTC 2007] manveru <m.fellinger@gmail.com> * document all of trinity/session darcs-hash:20070119120714-24576-df5b3464ad970407f487353a44938f3aa71ab7b3.gz [d3806fc | Fri Jan 19 11:06:00 UTC 2007] manveru <m.fellinger@gmail.com> * document all of trinity/response darcs-hash:20070119120656-24576-fd95a797c43da245775f4f468ffde5acc2f1eaf4.gz [41bce57 | Fri Jan 19 11:06:00 UTC 2007] manveru <m.fellinger@gmail.com> * document all of trinity/request darcs-hash:20070119120634-24576-40f23758111fb666fcd5d3e4a92aef65f04d4a58.gz [53dbce5 | Fri Jan 19 11:05:00 UTC 2007] manveru <m.fellinger@gmail.com> * don't include the dot-graph here (yet), also show all methods (private, protected) darcs-hash:20070119120542-24576-5cd141d60bb9d09807210080f67090534655b543.gz [74720ca | Fri Jan 19 10:10:00 UTC 2007] manveru <m.fellinger@gmail.com> * new rake todolist and the file it generates darcs-hash:20070119111025-24576-a5fef5deae4558caa8df89412610ba60a05014f8.gz [68b5e18 | Fri Jan 19 04:31:00 UTC 2007] manveru <m.fellinger@gmail.com> * add support for CDATA in FeedHelper, add some more tests and add from_xml to parse the class in again (just basic yet, no nested niceties) darcs-hash:20070119053144-24576-e62aaeb8f72b76a0409a8ac9aa17ee2835e6e9b0.gz [f8462e4 | Fri Jan 19 03:54:00 UTC 2007] manveru <m.fellinger@gmail.com> * extending FeedHelper and testcase, now attributes to tags are possible... (just for the enclosing class for now) darcs-hash:20070119045411-24576-38f39012fc5bceb038ace1a7f5845dc98ae2a96a.gz [a414c64 | Fri Jan 19 03:32:00 UTC 2007] manveru <m.fellinger@gmail.com> * don't duplicate body by reading it, the user can always see it with request.body.read in the controller. darcs-hash:20070119043257-24576-0e38d2f79096fd5c07a8ed6696dd4d2d5b90f894.gz [5c7759e | Thu Jan 18 14:13:00 UTC 2007] manveru <m.fellinger@gmail.com> * set the trinity-methods to private, we don't want them to be accessable darcs-hash:20070118151358-24576-5c3767256f65d97b02f0882ae70a75d6490faee3.gz [e866219 | Thu Jan 18 14:11:00 UTC 2007] manveru <m.fellinger@gmail.com> * ignore memcached in the tests if it's not installed darcs-hash:20070118151104-24576-82129a08ec44dfab90d7d769a9980454cb157c14.gz [2fa996f | Thu Jan 18 12:57:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing the controller-method-lookup darcs-hash:20070118135749-24576-f78466f58b35061f49dbaad1424a0475d807d041.gz [45c2013 | Thu Jan 18 02:24:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * patching method-lookup for controllers... now it should be possible to expose public methods via helper-methods... have to test this first though. darcs-hash:20070118032454-40155-41011e19e7f1f32ded8171972e309b1511974988.gz [e752e29 | Wed Jan 17 01:56:00 UTC 2007] m.fellinger <m.fellinger@gmail.com> * rephrase message on startup... darcs-hash:20070117025621-40155-2f988e0cc5de663a0dc0eb52a7ec9ab3108dbd80.gz [e22f7f5 | Thu Jan 18 12:44:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove the useless invalidate_cache method from CacheHelper darcs-hash:20070118134418-24576-c52e9a5aa16f8c71ae7eca5ee04f57c2c80ebd74.gz [ec54bb7 | Thu Jan 18 12:43:00 UTC 2007] manveru <m.fellinger@gmail.com> * make rake record a bit less annoying ;) darcs-hash:20070118134314-24576-15ced3002c9aec61c01835b12fe0dc04be259137.gz [7653415 | Thu Jan 18 12:41:00 UTC 2007] manveru <m.fellinger@gmail.com> * add example/caching.rb darcs-hash:20070118134147-24576-3817f8b1daef8c88648969e764288937e58f775b.gz [ab466d2 | Thu Jan 18 12:28:00 UTC 2007] manveru <m.fellinger@gmail.com> * total reimplementation of caching, the CacheHelper now finally works (added testcase) for both actions (based on action(*params)) and values, this is a giant step for ramaze, since proper caching is a key to serving fast. The implementation might not be perfect yet, but some real-life testing will show if the current API and use-cases are worth anything, for now i'm very satisfied :) darcs-hash:20070118132807-24576-e46ec041fd95f627cae1a5956449b06a0a4dcf5f.gz [7a54d20 | Thu Jan 18 11:25:00 UTC 2007] manveru <m.fellinger@gmail.com> * test/tc_aspect.rb => test/tc_helper_aspect.rb darcs-hash:20070118122501-24576-5a900817b63e8cd5f806c1ad1ff39b6e4ee9fb77.gz [cc2ae25 | Thu Jan 18 10:43:00 UTC 2007] manveru <m.fellinger@gmail.com> * provide a little anonymous gulp-class to catch the stuff Og sends out in the testcase, finally the rake test looks pretty enough :) darcs-hash:20070118114316-24576-1097772a8c73894a54cf9ad6dc790736224b8864.gz [47a4f23 | Thu Jan 18 10:33:00 UTC 2007] manveru <m.fellinger@gmail.com> * add Kernel#silently, to temporarly turn off warnings on reassinging constants and use it in session.rb darcs-hash:20070118113335-24576-4eced7c8e62629aeaee3531dc5c4bdb9b5fa599e.gz [45397d5 | Thu Jan 18 03:50:00 UTC 2007] manveru <m.fellinger@gmail.com> * add/remove some todos darcs-hash:20070118045048-24576-b360d41291f66c715399311261bc5cc9f23daad2.gz [69f7169 | Thu Jan 18 03:49:00 UTC 2007] manveru <m.fellinger@gmail.com> * introduce caching now for sessions as well, setting the adapter for tc_request back to mongrel since webrick doesn't implement PUT (fix that too) darcs-hash:20070118044942-24576-fa5ef84c88e7e4d39648788934b9fd41c6d23f41.gz [3a53a33 | Thu Jan 18 03:35:00 UTC 2007] manveru <m.fellinger@gmail.com> * add test for PUT, we need to find a way to do a DELETE-request, possibly with Net::HTTP? (also investigate other ways not to rely on curl for PUT) darcs-hash:20070118043536-24576-63aa5f80d0f29ecb8bdff4b9f1bfe354b386022a.gz [d9539e7 | Thu Jan 18 03:35:00 UTC 2007] manveru <m.fellinger@gmail.com> * rewrite tc_helper_feed darcs-hash:20070118043519-24576-1b9efab63d9bc604af391881b0ffecba70c0baf3.gz [6d1f7bc | Thu Jan 18 03:34:00 UTC 2007] manveru <m.fellinger@gmail.com> * better implementation of the tc_global, it would fail on slow or busy systems darcs-hash:20070118043458-24576-22fb437bd2226a3bdbc3ac3ce4ecc54c7de1382f.gz [0964c2a | Thu Jan 18 03:34:00 UTC 2007] manveru <m.fellinger@gmail.com> * support PUT and DELETE darcs-hash:20070118043429-24576-989c6deebb1321ef6b65c4ef5071876647c4a3b9.gz [8f77191 | Thu Jan 18 03:33:00 UTC 2007] manveru <m.fellinger@gmail.com> * rewrite FeedHelper, still not functional, but a lot nicer to build XML from objects darcs-hash:20070118043357-24576-6d19ed6d5f6e39e3c29022542dd7dcb1bed25758.gz [0848f4b | Tue Jan 16 14:18:00 UTC 2007] manveru <m.fellinger@gmail.com> * provide some info about where the adapter attempts to connect... also fix debugging-output in tests darcs-hash:20070116151830-24576-ae319597395d82c3fa934594661286655b82830b.gz [f2694ba | Tue Jan 16 14:18:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove require of fastthread, they finally fixed it darcs-hash:20070116151806-24576-3d8e5c78956e291136f88ab31eadec6477d778ff.gz [a407d15 | Tue Jan 16 14:17:00 UTC 2007] manveru <m.fellinger@gmail.com> * add handling of multipart (file-uploads) darcs-hash:20070116151748-24576-5692ff620fcd517e7c858dcfa5f934c0fcec47af.gz [d9302a7 | Mon Jan 15 11:17:00 UTC 2007] manveru <m.fellinger@gmail.com> * all_tests gives _much_ prettier and more informative output... still gotta use systemu for catching that nasty output from Og though... darcs-hash:20070115121742-24576-208a754006489ec99c2e4a31048723453e0e29bd.gz [c3ff7fc | Mon Jan 15 11:16:00 UTC 2007] manveru <m.fellinger@gmail.com> * redirect takes now a :status argument, for your very own redirect-status-code darcs-hash:20070115121655-24576-8557c8b173d8b0852b35fc13de552db91dc9120a.gz [4829135 | Mon Jan 15 10:53:00 UTC 2007] manveru <m.fellinger@gmail.com> * fix the spaces ;) darcs-hash:20070115115316-24576-9eadd2a9e5cdb568b1efd2a114d1eba9e8aed5d0.gz [efed420 | Mon Jan 15 10:52:00 UTC 2007] manveru <m.fellinger@gmail.com> * run fix-end-spaces and add-copyright before rake record darcs-hash:20070115115243-24576-c3eeb86292231021fb2a33e51d5a1e14fd35ae4f.gz [db229ef | Mon Jan 15 10:50:00 UTC 2007] manveru <m.fellinger@gmail.com> * rake fix-end-spaces, new task to remove spaces at end of line where not needed ;) darcs-hash:20070115115045-24576-0290e96c1de624b2d8a15c19a6414fc5b3c1b53c.gz [6e8a88e | Mon Jan 15 10:50:00 UTC 2007] manveru <m.fellinger@gmail.com> * add a .each method to GlobalStruct darcs-hash:20070115115029-24576-2ba869ab5d71cb14ff51d278cb129b7354094d54.gz [bc3b35c | Mon Jan 15 10:48:00 UTC 2007] manveru <m.fellinger@gmail.com> * a much POLSer way of working with the bin/ramaze, options from the CLI are not overwritten by options in your app anymore... also ignores start from your app if you use this command. darcs-hash:20070115114821-24576-7bf7ab46595c6e706f02e61fe43461fadffcca87.gz [8cc095e | Mon Jan 15 04:42:00 UTC 2007] manveru <m.fellinger@gmail.com> * add rake patchsize to show how many patches we got darcs-hash:20070115054243-24576-5211f2b982783cadf59f3c004b1290c4f880b08b.gz [b6a2dde | Mon Jan 15 04:15:00 UTC 2007] manveru <m.fellinger@gmail.com> * nicer handling of SIGINT darcs-hash:20070115051549-24576-802f2a1473d097dbff728b4a8185f849624fed58.gz [4a59050 | Sat Jan 13 23:10:00 UTC 2007] manveru <m.fellinger@gmail.com> * add example/microwiki, like miniwiki but total reimplementation using Template::Ramaze, should do one for every templating-engine to show usage darcs-hash:20070114001050-24576-fe82597dd6a8be4403d8e79467553d2375855b01.gz [339e9bd | Sat Jan 13 23:10:00 UTC 2007] manveru <m.fellinger@gmail.com> * run tests per default on port 7007 and only on 127.0.0.1, avoids interfering with running apps darcs-hash:20070114001008-24576-5ea329235663eddf25031c3b00aff321d9c3354b.gz [8f2248f | Sat Jan 13 23:09:00 UTC 2007] manveru <m.fellinger@gmail.com> * improve shutdown darcs-hash:20070114000948-24576-99353e66bab5c91de5fe4533147427cd6a7de723.gz [845ae63 | Sat Jan 13 23:09:00 UTC 2007] manveru <m.fellinger@gmail.com> * rearrange and add the Global parameters a little bit darcs-hash:20070114000924-24576-9c490d167fa29ff53985a91c3c3ed610a4814cbe.gz [5cfaa74 | Sat Jan 13 23:08:00 UTC 2007] manveru <m.fellinger@gmail.com> * provide a content_type for the error-page... old bug, need to add some tests for the errorpage... darcs-hash:20070114000856-24576-22b0e003a6443248bd78f63d8b46430607def093.gz [5dec762 | Sat Jan 13 23:08:00 UTC 2007] manveru <m.fellinger@gmail.com> * clean the setting of response/request/sessions a little bit darcs-hash:20070114000833-24576-f5fe7707a7ebb8fdc48fc0a30130cb38021a8543.gz [659d3c0 | Sat Jan 13 23:07:00 UTC 2007] manveru <m.fellinger@gmail.com> * CGI.unescape all parameters of GET/POST darcs-hash:20070114000744-24576-cd22832aa8a075a36e9fc2a422f939ba0b10b0d8.gz [cae5f84 | Sat Jan 13 23:06:00 UTC 2007] manveru <m.fellinger@gmail.com> * use method_missing to catch all the transactions for YAML::Store, cleans the API quite a bit and provides more functionality darcs-hash:20070114000639-24576-b7fde45766faac56db2748e2dbb69d153ea57808.gz [c0efd03 | Sat Jan 13 21:28:00 UTC 2007] manveru <m.fellinger@gmail.com> * Ramaze 0.0.5 darcs-hash:20070113222833-24576-3ac798fdc28734e06e2173f2aa94b282833a8c04.gz [77dddcb | Sat Jan 13 21:28:00 UTC 2007] manveru <m.fellinger@gmail.com> * update CHANGELOG darcs-hash:20070113222804-24576-9061ac2849999835cb150856ab3337b0a996278a.gz [55d661d | Sat Jan 13 21:27:00 UTC 2007] manveru <m.fellinger@gmail.com> * added changelog task that updates doc/CHANGELOG based on doc/changes.txt (from rake changes) darcs-hash:20070113222720-24576-058db8e6676d43310f6881353ab9b7b9e33b4a39.gz [a42f393 | Sat Jan 13 21:26:00 UTC 2007] manveru <m.fellinger@gmail.com> * ran add-copyright once again darcs-hash:20070113222615-24576-e7f9df93b433bedf3ed40f18ed7a2bf63141c566.gz [c1d42bd | Sat Jan 13 21:20:00 UTC 2007] manveru <m.fellinger@gmail.com> * update README a bit darcs-hash:20070113222050-24576-8dab86ca54a3496bf2c5dc2f5e537c7de06af900.gz [8b7710e | Sat Jan 13 20:53:00 UTC 2007] manveru <m.fellinger@gmail.com> * update and extend testcases for tc_cache darcs-hash:20070113215317-24576-4389bc2dee8ec6084f73b5e35196ac3137b8ec17.gz [0478aec | Sat Jan 13 20:52:00 UTC 2007] manveru <m.fellinger@gmail.com> * change Rakefile to sweep out cache.yaml and run rake clean after rake test darcs-hash:20070113215254-24576-7eeb6d290e4438d33c2993767d8c3b2d2b79973a.gz [384f0a3 | Sat Jan 13 20:49:00 UTC 2007] manveru <m.fellinger@gmail.com> * finally added and integrated caching, possible caches for now are YAML::Store, usual Hash (for one instance only) and MemCache, the respective objects are YAMLStoreCache, MemoryCache and MemcachedCache, you can set them with Global.cache = respective_class before startup, there is no functionality yet to change this during runtime, but you could Ramaze.const_set('Cache', YourClass.new) since Ramze::Cache is the usual instance. See the testcases and documentation for more information on the usage darcs-hash:20070113214914-24576-52e5077ba48e5c4cc223ef64d70f04197e8c6083.gz [c495761 | Fri Jan 12 21:12:00 UTC 2007] manveru <m.fellinger@gmail.com> * add tc_feed_helper darcs-hash:20070112221207-24576-c11b96b3c6449f8e45e10ce6b47de5aa200b8835.gz [17c9d2e | Fri Jan 12 21:11:00 UTC 2007] manveru <m.fellinger@gmail.com> * add tc_cache darcs-hash:20070112221156-24576-950f035ff589020e1d5cc854452e624bed41fb5c.gz [7bc3072 | Fri Jan 12 21:11:00 UTC 2007] manveru <m.fellinger@gmail.com> * autoreload now has its own method on Ramaze and can be turned off by Global.autoreload = false darcs-hash:20070112221128-24576-ed1ffca38fc36687ba107284f8ca4d05fcf91895.gz [b2702c5 | Fri Jan 12 21:10:00 UTC 2007] manveru <m.fellinger@gmail.com> * require 'ramaze/cache' (not yet used) darcs-hash:20070112221051-24576-9480a0f8252617c69436b77715778c40a0a5bbca.gz [89f7ceb | Fri Jan 12 21:10:00 UTC 2007] manveru <m.fellinger@gmail.com> * use Set instead of Array for the Controllers darcs-hash:20070112221020-24576-0fd835c2e44e96569d3a98126cf66ff587dc02f6.gz [ea1d31f | Fri Jan 12 21:09:00 UTC 2007] manveru <m.fellinger@gmail.com> * finally fix the problem of having another application running (we can detect it now!) darcs-hash:20070112220933-24576-98d0c10d48fb337b785bf61c5aefd540489233e8.gz [d3a2a92 | Fri Jan 12 21:09:00 UTC 2007] manveru <m.fellinger@gmail.com> * use Set instead of Array in autoreload... makes it a bit nicer darcs-hash:20070112220901-24576-944e02de99670c78635f1f05da83ad4baef5c047.gz [96dbdd8 | Fri Jan 12 21:08:00 UTC 2007] manveru <m.fellinger@gmail.com> * fix FeedHelper, had one <feed> too much darcs-hash:20070112220821-24576-9dbb187a2519ef4e3ec4e1408f378f5f432097e2.gz [4d8bf51 | Fri Jan 12 21:07:00 UTC 2007] manveru <m.fellinger@gmail.com> * first version of (real) cache darcs-hash:20070112220750-24576-ea6e8046ec7ebe581b39dcc203149c86ff892834.gz [514b1c2 | Thu Jan 11 13:00:00 UTC 2007] manveru <m.fellinger@gmail.com> * simple CacheHelper darcs-hash:20070111140053-24576-a4a481ee0394ad2fbc3ac5bac81fdda611c1bdf2.gz [9be5c61 | Thu Jan 11 14:43:00 UTC 2007] manveru <m.fellinger@gmail.com> * fix Rakefile darcs-hash:20070111154308-24576-46a4f2ef4a976209d6b7a3e0eaff09f4a30fa202.gz [eb9b1c2 | Thu Jan 11 14:35:00 UTC 2007] manveru <m.fellinger@gmail.com> * add some more tasks, :record and :changes (record calls changes) darcs-hash:20070111153503-24576-e82d1086db1358e2906c99cbc5c4d59df5ee63c0.gz [a6439fa | Thu Jan 11 14:28:00 UTC 2007] manveru <m.fellinger@gmail.com> * added tasks changes-xml and changes-text to the Rakefile, stores the current changes into textual format for further use :) darcs-hash:20070111152819-24576-3ee0ba818907e1fd7ff88dcb4468539aded50f42.gz [d2c6000 | Tue Jan 09 04:19:00 UTC 2007] manveru <m.fellinger@gmail.com> * add the template for the tc_template_ramaze darcs-hash:20070109051911-24576-c0af02d2711f95ef4c6eec065aa52d437cd99a48.gz [3b109c4 | Tue Jan 09 04:17:00 UTC 2007] manveru <m.fellinger@gmail.com> * support template-only actions for Template::Ramaze, now you can just put a file with the appropiate name in your template-directory and it doesn't need a seperate method in your controller... this does not work yet with multiple arguments darcs-hash:20070109051722-24576-5785fac19cb9d8f6b76614b3ff3d9c8acfd682d2.gz [8dbcf49 | Mon Jan 08 12:38:00 UTC 2007] manveru <m.fellinger@gmail.com> * stop some squeaking of the wheel and added a little comment of the why darcs-hash:20070108133833-24576-096802207952d35ebc835fc1fc608c5c9debba02.gz [ee7c689 | Mon Jan 08 07:38:00 UTC 2007] manveru <m.fellinger@gmail.com> * fix feed.rb _again_ darcs-hash:20070108083821-24576-9761fc8ad27b1a80ccfb8840052b26d346d4e051.gz [d4f38a6 | Mon Jan 08 08:37:00 UTC 2007] manveru <m.fellinger@gmail.com> * check before undef method id in Feed::Bag, that makes it better suited for autoreload darcs-hash:20070108093714-24576-915471406e335626ae1acd91f494a4afecba254a.gz [a66970b | Mon Jan 08 08:15:00 UTC 2007] manveru <m.fellinger@gmail.com> * escape the stuff we get (possibly dangerous) darcs-hash:20070108091530-24576-a09127f65a0f5ccba5939666b555a3a7f21de9c7.gz [9b34f5f | Mon Jan 08 06:28:00 UTC 2007] manveru <m.fellinger@gmail.com> * serious extension of TCFormHelper darcs-hash:20070108072802-24576-b8c839df01e5bdcbab57a26c2febe3d77649d8dd.gz [5aaca3f | Mon Jan 08 06:27:00 UTC 2007] manveru <m.fellinger@gmail.com> * remove useless code in ramaze.rb darcs-hash:20070108072746-24576-bd648b1b1b51780138be436842ca2eed948af641.gz [faf2750 | Mon Jan 08 06:26:00 UTC 2007] manveru <m.fellinger@gmail.com> * critical, log error when one happens on render! not just recall (which is a bad thing... we should keep a record to avoid loops in case of errors... horrible DoS :| darcs-hash:20070108072647-24576-7f634b0d99c83c598e486c7d83542d55ccb1d5f3.gz [3cb87ab | Mon Jan 08 06:26:00 UTC 2007] manveru <m.fellinger@gmail.com> * make error-output prettier darcs-hash:20070108072633-24576-79c87aa8a9db278bb0f74c960442a52b0f46c6ee.gz [75edcd0 | Mon Jan 08 06:25:00 UTC 2007] manveru <m.fellinger@gmail.com> * FormHelper now handles Date and works! (total rewrite of the option-handling) darcs-hash:20070108072549-24576-4b5f48a22f940ebc51173708999901a6becc630d.gz [94e2454 | Mon Jan 08 06:25:00 UTC 2007] manveru <m.fellinger@gmail.com> * add 'docs' in the FeedHelper :) darcs-hash:20070108072522-24576-466210c245a605bc7b77f8bc42825f6a498881d4.gz [69df874 | Mon Jan 08 06:24:00 UTC 2007] manveru <m.fellinger@gmail.com> * little prettification in dispatcher darcs-hash:20070108072457-24576-7c95a247af946f8bf3517c3068691fa2538981ab.gz [ecbcacc | Mon Jan 08 02:55:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixed test (for rcov) darcs-hash:20070108035509-24576-6936c5da01dbe880fe16205d8d8810e23eff2fbe.gz [45dfa2e | Mon Jan 08 02:54:00 UTC 2007] manveru <m.fellinger@gmail.com> * not yet completed rewrite of form-helper darcs-hash:20070108035419-24576-a81e0688e0f0e3f001724d1dea781da4adef4491.gz [a681998 | Mon Jan 08 02:53:00 UTC 2007] manveru <m.fellinger@gmail.com> * extend FormHelper test darcs-hash:20070108035345-24576-1daf0729be788f2bbf4fcbdf8f01c51155ec74e3.gz [aced91d | Mon Jan 08 01:44:00 UTC 2007] manveru <m.fellinger@gmail.com> * Session.current added darcs-hash:20070108024452-24576-2ff2099bfc8229bb1a83a58ff7e0e5e9548b9bfe.gz [988604a | Mon Jan 08 01:44:00 UTC 2007] manveru <m.fellinger@gmail.com> * fix Inform, make output a bit nicer again darcs-hash:20070108024427-24576-4a8b959a5daacf5d7eb83ce3fd69e2620da0d3d1.gz [e9455ee | Mon Jan 08 01:43:00 UTC 2007] manveru <m.fellinger@gmail.com> * two fixes, use AuthHelper::PASSWORD rather than a preset one (still defaults to 'passwort') darcs-hash:20070108024324-24576-9cbba429c67a6051cb2ad453cff4286ad496d61e.gz [f02d112 | Mon Jan 08 01:43:00 UTC 2007] manveru <m.fellinger@gmail.com> * inform on using cached version darcs-hash:20070108024302-24576-d1533125143ec70b043fb5c4819256641872f8a5.gz [b1aabaa | Fri Jan 05 13:14:00 UTC 2007] manveru <m.fellinger@gmail.com> * fix OpenStruct#temp darcs-hash:20070105141428-24576-ca5c64fe9bda2ee3215527a971604e423fdd6723.gz [3b1020a | Thu Jan 04 23:37:00 UTC 2007] manveru <m.fellinger@gmail.com> * changes in Template::Ramaze again, mostly passing filenames to eval darcs-hash:20070105003732-24576-2119617ad5ef93bc089ab0c3059d513903a2ec1f.gz [9fcb7f8 | Thu Jan 04 20:35:00 UTC 2007] manveru <m.fellinger@gmail.com> * add a very simple AuthHelper darcs-hash:20070104213543-24576-3966e2f75348a7fd22d99ce72ad577607f77c726.gz [dfff768 | Fri Jan 05 14:10:00 UTC 2007] manveru <m.fellinger@gmail.com> * some comfy changes in Inform darcs-hash:20070105151047-24576-767be4341a5c2a0f805ba235f91c4fa586e13166.gz [78566f7 | Fri Jan 05 14:07:00 UTC 2007] manveru <m.fellinger@gmail.com> * first implementation of FeedHelper darcs-hash:20070105150740-24576-eb29fbafc9523bc5642deca931eb08a6acea3ee0.gz [81d16e1 | Thu Jan 04 22:56:00 UTC 2007] manveru <m.fellinger@gmail.com> * add copyright to files that still lack it darcs-hash:20070104235627-24576-70f76cf25447d146adf2210aa5efbcf5170b03e4.gz [cee69d1 | Thu Jan 04 22:56:00 UTC 2007] manveru <m.fellinger@gmail.com> * rake add_copyright adds copyright to files that don't have it :) darcs-hash:20070104235609-24576-3f48adc30f0f2b7062a366eaf1695e558e5e2a55.gz [673f196 | Thu Jan 04 20:27:00 UTC 2007] manveru <m.fellinger@gmail.com> * stub for a TC to send a file. darcs-hash:20070104212748-24576-8d76f00664ae054010310b6b3865cda4f353212a.gz [46edaf7 | Thu Jan 04 20:26:00 UTC 2007] manveru <m.fellinger@gmail.com> * patch the parsing of GET/POST parameters again... accidentially used escape instead of unescape :P darcs-hash:20070104212648-24576-be08820e35c463b6e070653e643659369236a7a2.gz [2d02fe3 | Thu Jan 04 20:26:00 UTC 2007] manveru <m.fellinger@gmail.com> * this little patch uses the ability of erubis to eval with a filename to give better error-reports darcs-hash:20070104212607-24576-a92d8d85934f998dc95ef985c393e2ae986c445a.gz [3a79ac2 | Wed Jan 03 17:47:00 UTC 2007] manveru <m.fellinger@gmail.com> * fixing POST-requests darcs-hash:20070103184710-24576-7c4d62222ec480fac7b1bac35e5b6ebf353c5f0e.gz [0035b67 | Wed Jan 03 17:46:00 UTC 2007] manveru <m.fellinger@gmail.com> * add String.camel_case String.snake_case darcs-hash:20070103184650-24576-2a283b9cec9d91f72b8de891b7dacae5dca337af.gz [0106fc2 | Tue Jan 02 04:32:00 UTC 2007] manveru <m.fellinger@gmail.com> * smaller changes not really worth mentioning :P darcs-hash:20070102053224-24576-3905ed91dbe56f577c18857742f1f0af55e90034.gz [8811f37 | Tue Jan 02 04:32:00 UTC 2007] manveru <m.fellinger@gmail.com> * pass on parameter-parsing to CGI.parse darcs-hash:20070102053202-24576-893e8f3b01133710bb99932b01598dbe45cfbf59.gz [bced109 | Tue Jan 02 04:31:00 UTC 2007] manveru <m.fellinger@gmail.com> * set an instance variable instead of checking for arity of render-method (@hash) for Elements darcs-hash:20070102053123-24576-a0021bb29eea25c2098aae3a518ec89bb787ce06.gz [607a9df | Tue Jan 02 04:30:00 UTC 2007] manveru <m.fellinger@gmail.com> * fix form-helper in case there is no control darcs-hash:20070102053059-24576-7cde4e0010db78f09746d1118a1c2ea9aee27841.gz [aeaa92b | Tue Jan 02 04:30:00 UTC 2007] manveru <m.fellinger@gmail.com> * fix url for stylesheet of error-page darcs-hash:20070102053036-24576-e1c7ec940eb535e61c40bbcd3c40a86f8b5f29ca.gz [0883dce | Tue Jan 02 00:03:00 UTC 2007] manveru <m.fellinger@gmail.com> * don't break this test if we got no Og... suboptimal :| darcs-hash:20070102010321-24576-91db6b7003d233503039b1345046846625ca2f34.gz [6934329 | Tue Jan 02 00:01:00 UTC 2007] manveru <m.fellinger@gmail.com> * rewrite the usage of the render-method a bit to be clear :) darcs-hash:20070102010117-24576-ed943528b8966dff9f273735af2df11ff61b36b5.gz [ffbe943 | Mon Jan 01 09:55:00 UTC 2007] manveru <m.fellinger@gmail.com> * extending tc_session darcs-hash:20070101105547-24576-491110b3103e3bace146c0349d289ea5ccf9f24b.gz [5a2b55c | Sun Dec 31 21:10:00 UTC 2006] manveru <m.fellinger@gmail.com> * fix ramaze for fastthread-require... and split shutdown into shutoff/shutdown for more granularity darcs-hash:20061231221012-24576-9c3022fa32c03d8df5b2ee8953d77d84f3334eb8.gz [f84b95b | Sun Dec 31 21:09:00 UTC 2006] manveru <m.fellinger@gmail.com> * add the rake uncommented task, this is a very simple method that shows you which methods are not documented yet (alpha phase, it's got loads of bugs... but is quite helpful already just as a rough overview) darcs-hash:20061231220908-24576-f9d102ffc884eaa907a7aa2e716075548539d2d6.gz [392bbb4 | Sun Dec 31 21:08:00 UTC 2006] manveru <m.fellinger@gmail.com> * modify all the testcases to fit the new ramaze-method inside context... also split tc_adapter into tc_adapter_mongrel/tc_adapter_webrick darcs-hash:20061231220820-24576-8f29fcb0f527d0d99bace61e2797558b3326ea19.gz [b1ee316 | Sun Dec 31 21:05:00 UTC 2006] manveru <m.fellinger@gmail.com> * huge change to the test_helper... no more ramaze{} but ramaze() - this will shield us from future pain and is also a lot nicer for integration into RSpec darcs-hash:20061231220537-24576-1c2ffdc3d64eb0b74e29fd643a220b7b58cfa0f2.gz [3f13c6a | Sun Dec 31 13:33:00 UTC 2006] manveru <m.fellinger@gmail.com> * fixing a rather serious bug in the Element, only consider an Element if you really find the class for it and this class responds to :render darcs-hash:20061231143343-24576-86eb49098c67e0e9feccd625908c286c5100bef6.gz [a69e6cb | Sun Dec 31 13:32:00 UTC 2006] manveru <m.fellinger@gmail.com> * big changes again in the form-helper... added loads of options, most are used in the testcases (that still have to be expanded, but they give a good idea of what is possible now) darcs-hash:20061231143251-24576-a5926199a1edb9a494d1b0738bd8c22a2267a79f.gz [ccdac75 | Sun Dec 31 13:32:00 UTC 2006] manveru <m.fellinger@gmail.com> * added OpenStruct#temp to create temporary copies just with an updated table darcs-hash:20061231143222-24576-582f769d3fc6fb550a49ed515b9a4287512a833c.gz [fa722c1 | Fri Dec 29 20:57:00 UTC 2006] manveru <m.fellinger@gmail.com> * support for element-parameters and some tests for it darcs-hash:20061229215713-24576-b7eccd6836abb2e12e60c106ebcf5c403342f25b.gz [21ca0ee | Fri Dec 29 11:01:00 UTC 2006] manveru <m.fellinger@gmail.com> * forgot one Logger => Inform in autoreload darcs-hash:20061229120142-24576-c45c4a78067077715e6470d3c6f4bfa5a9ab3d1c.gz [3fdf3ad | Fri Dec 29 04:00:00 UTC 2006] manveru <m.fellinger@gmail.com> * Ramaze::Logger => Ramaze::Inform - avoid clashes with the tons of other Logger thingies out there darcs-hash:20061229050020-24576-d75c30ae2de9b6879249144e7480b7bc4b1d5ce5.gz [c1cd946 | Fri Dec 29 03:42:00 UTC 2006] manveru <m.fellinger@gmail.com> * fix tc_tidy darcs-hash:20061229044223-24576-1a5a38aaf3cca193d87a2b9555296d8393439a3b.gz [5fe2458 | Fri Dec 29 03:25:00 UTC 2006] manveru <m.fellinger@gmail.com> * change from digest/sha1 to digest/sha2 - would someone explain me what this does? darcs-hash:20061229042519-24576-8efa60e45158d3be1d73e7d1bab871abadaef3df.gz [aa3b587 | Fri Dec 29 03:24:00 UTC 2006] manveru <m.fellinger@gmail.com> * fixing diverse issues with latest rubygems update darcs-hash:20061229042448-24576-43cbf0032533123a496d5d9e195a484d309851ba.gz [5f5e884 | Mon Dec 25 21:01:00 UTC 2006] manveru <m.fellinger@gmail.com> * give the markaby-templates in the miniwiki-example the proper ext. darcs-hash:20061225220115-24576-daa3911f0a5251f5ca2eddbb4ef4021cdd35dafa.gz [10d4fad | Sun Dec 24 17:52:00 UTC 2006] manveru <m.fellinger@gmail.com> * stop autoreload from failing from some mysterious bug... darcs-hash:20061224185203-24576-402921469773d5267a409a499d0cf75158e66701.gz [c3e3c1a | Sun Dec 24 17:51:00 UTC 2006] manveru <m.fellinger@gmail.com> * fix the error-page to work with the new template-implementation... also remove the old Gestalt-code, it's in darcs anyway darcs-hash:20061224185118-24576-6a1a2f791307059f1728575d0bf51347e974a366.gz [2ca9c61 | Fri Dec 22 19:28:00 UTC 2006] manveru <m.fellinger@gmail.com> * blog/template/entry/list.rmze darcs-hash:20061222202835-24576-efa7faf59716776caafa94dbb395e03b6654aa27.gz [eedc74a | Fri Dec 22 19:27:00 UTC 2006] manveru <m.fellinger@gmail.com> * snippet/kernel/rescue_require.rb darcs-hash:20061222202747-24576-163ceccd23488b00f97467d83b6751c4446b5619.gz [2d629e9 | Fri Dec 22 19:26:00 UTC 2006] manveru <m.fellinger@gmail.com> * additional specification for tc_element darcs-hash:20061222202617-24576-c492a52fdf76cde4ddd80de5ba63c601d428118c.gz [7527554 | Fri Dec 22 19:26:00 UTC 2006] manveru <m.fellinger@gmail.com> * add test/tc_aspect darcs-hash:20061222202604-24576-597ef9c9339dd2399d2fe9d1e61744e20c69eb74.gz [02fdde8 | Fri Dec 22 19:24:00 UTC 2006] manveru <m.fellinger@gmail.com> * restructure test_helper for fastthread... darcs-hash:20061222202458-24576-f7fae2b11381c7c4b3abf88f11cce591d46eed88.gz [f1cc4bf | Fri Dec 22 19:24:00 UTC 2006] manveru <m.fellinger@gmail.com> * reimplementation of session... mainly better hash darcs-hash:20061222202438-24576-d7cf015ca6d76f288f9e1b5dd6b7fc553e451b39.gz [dd0b2f2 | Fri Dec 22 19:22:00 UTC 2006] manveru <m.fellinger@gmail.com> * typo darcs-hash:20061222202206-24576-1109e3788084c5710913bad64a9e5da1a67ac580.gz [a0c4f46 | Fri Dec 22 19:21:00 UTC 2006] manveru <m.fellinger@gmail.com> * fix a serious bug with the HEREDOC in the template/ramaze... if we don't prefix a character it will break if the hash starts with a number (oddly enough, this happens very seldom) darcs-hash:20061222202115-24576-fb8d96ee6b195bcfbca39631ae22dbbf1b1f4ad8.gz [0f1d9ee | Fri Dec 22 19:20:00 UTC 2006] manveru <m.fellinger@gmail.com> * add the helper/aspect darcs-hash:20061222202024-24576-10c77cd5a616bce6802cdaee4db8b0247d0a0dbd.gz [11ab9c3 | Fri Dec 22 19:20:00 UTC 2006] manveru <m.fellinger@gmail.com> * prepare the helper for addition of aspect darcs-hash:20061222202010-24576-025bde1952eba390b306a52367d66c09070ad0a8.gz [3b2a792 | Fri Dec 22 19:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * do not load fastthread in adapter/mongrel, if it has not been required so far by ramaze.rb it's too late already and we get only an annoying warning. darcs-hash:20061222201853-24576-1053005e603ff2c70be6fe5f87d1601b4681a42f.gz [27b4044 | Fri Dec 22 19:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * minor restructuring for ramaze.rb requires (mainly cause of fastthread) darcs-hash:20061222201812-24576-769648f51d7e0e5702e7d6dbce720c60cdd5eabf.gz [9fa728e | Fri Dec 22 17:02:00 UTC 2006] manveru <m.fellinger@gmail.com> * fix problem for fastthread-require, it has to be loaded before everything else (especially mongrel and/or thread) darcs-hash:20061222180239-24576-ba35413d840a2a5ac43314721ba034f7545dfba1.gz [93d59a8 | Wed Dec 20 06:33:00 UTC 2006] manveru <m.fellinger@gmail.com> * fix tc_template_ramaze for the restructuring (you don't have to call transform() in the controller anymore) darcs-hash:20061220073340-24576-cecc476ada007a720a069c5967818a2af5af229c.gz [489a06b | Wed Dec 20 06:33:00 UTC 2006] manveru <m.fellinger@gmail.com> * move the trap... now that i know that it uses continuations we should propably use a different technique... darcs-hash:20061220073311-24576-12e64767021bffe30a8e14c3fbe8f52f59916f32.gz [8d51519 | Wed Dec 20 06:30:00 UTC 2006] manveru <m.fellinger@gmail.com> * make find_template private, fix the :transform_pipeline and add a little comment darcs-hash:20061220073017-24576-68c8110772a4e46b611595effe820fb6386a9987.gz [6adeb1b | Wed Dec 20 06:30:00 UTC 2006] manveru <m.fellinger@gmail.com> * fixing Element for passing parameters darcs-hash:20061220073003-24576-9d105515be2033eed5c954fe3e173ee20ecdc632.gz [bde42d7 | Wed Dec 20 06:28:00 UTC 2006] manveru <m.fellinger@gmail.com> * restructuring of the ramaze-templating... looks a lot nicer and is a whole lot more modular... preparing to change for the use of render() in templates darcs-hash:20061220072834-24576-e18b781726f66c88c95189c09c7af7f59a784c29.gz [10ad860 | Wed Dec 20 06:26:00 UTC 2006] manveru <m.fellinger@gmail.com> * simplify the dispatcher a little bit, splitting the fill_out into respond_file and resopnd_action, so we can use it from the Templating for relookup of actions on different controllers darcs-hash:20061220072611-24576-a41945cae6f3b55871471526f73bfda79d020463.gz [5bd64c4 | Wed Dec 20 06:25:00 UTC 2006] manveru <m.fellinger@gmail.com> * little change in the README darcs-hash:20061220072555-24576-235f778bd944b9b843be246ac1e904976f616ca2.gz [62f95d7 | Mon Dec 18 05:09:00 UTC 2006] manveru <m.fellinger@gmail.com> * adding trait[:transform_pipeline] to Ramaze... this still is very buggy :| darcs-hash:20061218060950-24576-9a5938f442b1f4dc787275e6af30944236f45505.gz [5acc67b | Mon Dec 18 05:08:00 UTC 2006] manveru <m.fellinger@gmail.com> * first implementation of ancestor_trait, which searches the ancestors for a trait... this should be made default in a bit darcs-hash:20061218060851-24576-754c19cf3fe0c0380fb6bdd03b227c8485205423.gz [cbd610a | Mon Dec 18 05:07:00 UTC 2006] manveru <m.fellinger@gmail.com> * fixes some problems with autoreload when the path/file is b0rken darcs-hash:20061218060749-24576-0863f3fb8b2366f650805034fefdeb50c2f3a777.gz [56e6bb5 | Mon Dec 18 04:24:00 UTC 2006] manveru <m.fellinger@gmail.com> * remove method_missing from Logger... it overwrites alle method_missings everywhere!!! darcs-hash:20061218052403-24576-68567a7fc67b05055ee9ed99457506b4ebb020e4.gz [7407d65 | Mon Dec 18 04:21:00 UTC 2006] manveru <m.fellinger@gmail.com> * do not run setup_global in the bin/ramaze anymore, just pass them along... also fixes a problem for method-missing... error doesn't take multiple arguments (string/error-object only) darcs-hash:20061218052132-24576-90afbbc402b44054bb65af318f5f777ae9b1bcb2.gz [2b06618 | Fri Dec 15 12:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * removed the Timout for the total ramaze{} block for testing, added Ramaze.shutdown for the teardown (still commented, it has nasty side-effects) darcs-hash:20061215131843-24576-72afc5548f2c108921800adb6582a25415c01ce1.gz [be800a2 | Fri Dec 15 12:16:00 UTC 2006] manveru <m.fellinger@gmail.com> * tiny updates to ramaze.rb, rewrite of the shutdown method... it still is very fragile though... Mongrel seems to do magic to threads beyond my knowledge darcs-hash:20061215131647-24576-14c3bd0d14c5f6b86ec2f209ef76e3cd08fde7c0.gz [85b61ad | Fri Dec 15 12:15:00 UTC 2006] manveru <m.fellinger@gmail.com> * use the new Logger-capabilities to finally catch the stuff WEBrick has thrown long enough to STDOUT darcs-hash:20061215131544-24576-e31e0dcba3812a0e55113a85b9c212aa775c3bee.gz [823a31a | Fri Dec 15 12:14:00 UTC 2006] manveru <m.fellinger@gmail.com> * Logger.puts is no longer private, added also << as an alias... additionally it can be sneaked into usual Logger-systems and take them over :P darcs-hash:20061215131445-24576-00b7c64d2d658b1dc7843e1343cad0a57ce9834c.gz [7ee3578 | Fri Dec 15 12:13:00 UTC 2006] manveru <m.fellinger@gmail.com> * a little bit nicer adapters by use of class << self ... also added a stop-method for future use darcs-hash:20061215131358-24576-0fc9f93f296edf97df83487f6855d3797edf8eb9.gz [8ba8d8f | Fri Dec 15 12:12:00 UTC 2006] manveru <m.fellinger@gmail.com> * rewrite of the tc_global for the new structure darcs-hash:20061215131210-24576-cdd86e7baeed638049947e60b964ed652ee9cbef.gz [9945be4 | Fri Dec 15 12:11:00 UTC 2006] manveru <m.fellinger@gmail.com> * reimplementation of Global - should be a lot saner and simpler now ;) darcs-hash:20061215131100-24576-096d0c89d4a831806e737436e914be6dd3ad397c.gz [836e1dd | Fri Dec 15 04:59:00 UTC 2006] manveru <m.fellinger@gmail.com> * do not require digest/sha1 in session.rb - it is not used for calculating sessions darcs-hash:20061215055938-24576-d846a55cc04ee8c33c3f9d219b609cdfd9df4ac2.gz [5227e5e | Fri Dec 15 04:52:00 UTC 2006] manveru <m.fellinger@gmail.com> * this moves handle_elements into the ramaze/element.rb and names it transform, it handles arity of an render-method in the elements and passes optional parameters when given... this will give us a hard time when handling arbitary objects... :P darcs-hash:20061215055232-24576-b1ee011cbbbe7de23592aff292c4b9f26c5f239e.gz [69c04a8 | Fri Dec 15 04:51:00 UTC 2006] manveru <m.fellinger@gmail.com> * some minor changes regarding logging... there has still to be done a lot (esp webrick and logging to files) darcs-hash:20061215055127-24576-f901ae58c0663ae1838bb689fac184b0963bdb65.gz [496edb3 | Fri Dec 15 04:48:00 UTC 2006] manveru <m.fellinger@gmail.com> * this moves all global-stuff into the global.rb - makes ramaze.rb a lot nicer ;) - also added some more tests darcs-hash:20061215054837-24576-b6b4d46a3c84e720c8e8b4c622c2e6f6d8f6bb38.gz [136b2c1 | Fri Dec 15 04:20:00 UTC 2006] manveru <m.fellinger@gmail.com> * patching Global further, we move the defaults in here since they only clutter the ramaze.rb and make handling difficult darcs-hash:20061215052021-24576-741bb1b56d0fd279df0e04a6dd52848dc2fcecab.gz [73eab6f | Fri Dec 15 04:19:00 UTC 2006] manveru <m.fellinger@gmail.com> * do not raise on initialize of Global... it just looks odd ;) darcs-hash:20061215051934-24576-466de8c7589f2ece25445e68da444eb1ac44ee9b.gz [7ed964d | Fri Dec 15 04:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * do not timeout requests anymore... darcs-hash:20061215051856-24576-bfff5ec033d41cac50683384c3ae1d10c23b65eb.gz [0c9505d | Fri Dec 15 04:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * give mongrel a proper way to handle logging darcs-hash:20061215051808-24576-c7f3b41f874946be50b311abeaa219c04df1388d.gz [a9ed38b | Thu Dec 14 12:37:00 UTC 2006] manveru <m.fellinger@gmail.com> * convert the action to a string since we might get symbols as well, and remove some other useless debugging-info darcs-hash:20061214133716-24576-e9d184fdda4efb66de2ab545f412545462762db2.gz [0712395 | Thu Dec 14 12:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * trying to use #{render} and it seems to work, mostly darcs-hash:20061214133640-24576-93cc62368dc5158a4b50878c413333c008c1e296.gz [1fddd58 | Thu Dec 14 04:31:00 UTC 2006] manveru <m.fellinger@gmail.com> * removing some unneeded debugging-info from the template-file lookup darcs-hash:20061214053146-24576-a81301d126e12828b2aa37e404223bcc137b11d6.gz [5dab94e | Thu Dec 14 04:31:00 UTC 2006] manveru <m.fellinger@gmail.com> * making the blog-example a good deal neater... next up: sidebar ;) darcs-hash:20061214053101-24576-8fe72205bebc9182820f39c4bedfd90327baba71.gz [f7f0366 | Wed Dec 13 12:22:00 UTC 2006] manveru <m.fellinger@gmail.com> * remove the test for the amrita-controller, it's not neccesary anymore since we have an own testsuite for it... darcs-hash:20061213132254-24576-8233efb2ab7b3da5123ce212224f653c016f4a84.gz [d6976f7 | Wed Dec 13 12:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * fixing the testcases for templates... for some templates we used to use $0 as root, which would be lethal would it be a real application and it was started with the bin/ramaze - i removed that oddity and require it to have the real path, not relative to the first file darcs-hash:20061213131859-24576-d84c7a759fb0b4a9e8952be86564fa46431ba77b.gz [51c3463 | Wed Dec 13 12:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * simplify template/ramaze by inheriting from Template darcs-hash:20061213131826-24576-a67fcb73e5a4f41525521403ed65554f03ca3e09.gz [c08d205 | Wed Dec 13 12:17:00 UTC 2006] manveru <m.fellinger@gmail.com> * move the Element in its own file... template/ramaze/element - which also introduces a default way of extending templating-engines with new classes darcs-hash:20061213131710-24576-30d831a9ae76a40ff635052fddeaadab75ddf43a.gz [12e1286 | Wed Dec 13 12:16:00 UTC 2006] manveru <m.fellinger@gmail.com> * simplify template/markaby by inheriting from Template darcs-hash:20061213131630-24576-162f52864cb69ececc0a6781369b7bde3c687084.gz [925a4de | Wed Dec 13 12:16:00 UTC 2006] manveru <m.fellinger@gmail.com> * simplify template/erubis by inheriting from Template darcs-hash:20061213131606-24576-1ecf9f0ad26c418d7c2b29c16789b0414c55f830.gz [3513f67 | Wed Dec 13 12:15:00 UTC 2006] manveru <m.fellinger@gmail.com> * simplify the template/amrita2 by inheriting from Template darcs-hash:20061213131531-24576-b9ae0f37dfeadca099512343c2ba3b7bb75b90d4.gz [526cd92 | Wed Dec 13 12:14:00 UTC 2006] manveru <m.fellinger@gmail.com> * this introduces Ramaze::Template::Template - it's a really stupid name, but i couldn't come up with anything better... this is the first step in slacking down the templates (they are really not DRY anymore) darcs-hash:20061213131428-24576-d808de48816f4ca51bf84d94b8efaaedc0cb7dcf.gz [624259b | Wed Dec 13 12:12:00 UTC 2006] manveru <m.fellinger@gmail.com> * a neat little hack to see if an object is an 'instance' or not... though every object is an instance not every object responds to :new (which makes the distinction class/instance for me) darcs-hash:20061213131230-24576-cbad11280f1027edaf22c644a9f7fb4a9afed1a0.gz [001f016 | Wed Dec 13 12:11:00 UTC 2006] manveru <m.fellinger@gmail.com> * set the priority for the handling thread really high... should give it some advantages over the autoreload-thread in case of high load darcs-hash:20061213131146-24576-163e4be7aedc581baa2e81f2ba9368aba41ebacc.gz [f4557c5 | Wed Dec 13 12:10:00 UTC 2006] manveru <m.fellinger@gmail.com> * equalize the testcases for templates with the prefix tc_template_ (just for ramaze, which was tc_template.rb till now) darcs-hash:20061213131040-24576-56d062f9586595f76a2c483e28ae3d58cabdd500.gz [a636a8e | Wed Dec 13 12:06:00 UTC 2006] manveru <m.fellinger@gmail.com> * small update to the Rakefile... testing task-dependencies :P darcs-hash:20061213130635-24576-08175edea73e0abd8ac439d902e95f053bc49668.gz [4d6386b | Wed Dec 13 09:09:00 UTC 2006] manveru <m.fellinger@gmail.com> * wielding all the power of ramaze, the blog-example is coming along very very well, it uses elements and form-helper now, you can add/delete/edit entries... more to come ;) darcs-hash:20061213100951-24576-6a3aa670111bad625267d5cb702df1a0b4d1457a.gz [d15ce8a | Wed Dec 13 09:09:00 UTC 2006] manveru <m.fellinger@gmail.com> * adding an Element for the blog-example... makes overall design a _lot_ nicer :) darcs-hash:20061213100912-24576-5b170628f4ef56cb70316a41fdbf9af825f00a23.gz [bec1e06 | Wed Dec 13 09:08:00 UTC 2006] manveru <m.fellinger@gmail.com> * giving the blog-example a 'nice' stylesheet darcs-hash:20061213100849-24576-d31935cdb462618b133cbd0d0553df041e1b2354.gz [b709656 | Wed Dec 13 09:07:00 UTC 2006] manveru <m.fellinger@gmail.com> * various fixes for the lookup of template/ramaze templates darcs-hash:20061213100759-24576-df4e7e6907346297b7365daf796177511e66e959.gz [060108f | Wed Dec 13 09:07:00 UTC 2006] manveru <m.fellinger@gmail.com> * added implementation of element-handling into the template/ramaze, will add lots of docs later as well. darcs-hash:20061213100719-24576-d07b782cb6262dc7907f12416791267f79850a1f.gz [af46cf1 | Wed Dec 13 09:06:00 UTC 2006] manveru <m.fellinger@gmail.com> * added the basic structure of Element... maybe put this in its own file later darcs-hash:20061213100658-24576-a28c0d9b16da2b9a1a68b1834dff6f306562fcb5.gz [8376edf | Wed Dec 13 09:05:00 UTC 2006] manveru <m.fellinger@gmail.com> * rewrite of form-helper... should rename it since it works only with Og currently darcs-hash:20061213100544-24576-babc00e0c8ee38483850caad2a7fc237f99f8e95.gz [eb5afdf | Wed Dec 13 09:05:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a very basic testcases for how Element should work darcs-hash:20061213100507-24576-800b804c68e5db2cdcc88cd8a0ec275d314208f2.gz [bbf61cc | Wed Dec 13 03:49:00 UTC 2006] manveru <m.fellinger@gmail.com> * do not use .rmze templates for markaby, only .mab - this should be done for the other templating-systems as well. darcs-hash:20061213044928-24576-2957c74e83fa68db7aa4db7ba1655ab4c2611933.gz [898e6b7 | Wed Dec 13 03:48:00 UTC 2006] manveru <m.fellinger@gmail.com> * some experiments with the helper-facility in markaby... not really working yet, but we're getting there darcs-hash:20061213044848-24576-f250e2c4e07a1a1a32656767b0127f13db03469d.gz [56a0a60 | Wed Dec 13 03:48:00 UTC 2006] manveru <m.fellinger@gmail.com> * do not rescue in markaby anymore, this is done already by markaby itself and it just obfuscates the error-report darcs-hash:20061213044820-24576-1e09b9525818ae1a8f9858576c8d27535e7cf0a4.gz [61b9045 | Wed Dec 13 03:47:00 UTC 2006] manveru <m.fellinger@gmail.com> * better handling of the instance-variable-collection, due to the .flatten it used to break if it encounters and empty array as value darcs-hash:20061213044744-24576-5525d76b08916c41838e549a9931f3700e352b5d.gz [a3199c0 | Wed Dec 13 03:46:00 UTC 2006] manveru <m.fellinger@gmail.com> * the error-page used to break when it meets a (eval) in the backtrace, make it just ignore them (may add some more information later) darcs-hash:20061213044638-24576-0ea7f381e423570c998f1450406b4348c13883ff.gz [06e643e | Wed Dec 13 03:46:00 UTC 2006] manveru <m.fellinger@gmail.com> * make ramaze run again, the helper/form really messed things up due to some syntax-errors darcs-hash:20061213044613-24576-97c9af17e25b27ad1b17615cc214af37f3bacd86.gz [b66eeed | Wed Dec 13 03:45:00 UTC 2006] manveru <m.fellinger@gmail.com> * unification of the examples/template darcs-hash:20061213044541-24576-99ab8cebc1bd47d03db4ee73b4613b0966a91de9.gz [6fe040f | Wed Dec 13 03:44:00 UTC 2006] manveru <m.fellinger@gmail.com> * introducing examples/templates/template_markaby (not yet working due to some odd bugs using helpers) darcs-hash:20061213044459-24576-f71a430caf363ab766681fd3ba1bb532326456b4.gz [109160b | Tue Dec 12 11:52:00 UTC 2006] manveru <m.fellinger@gmail.com> * now, that's finally a nice README :) darcs-hash:20061212125215-24576-42767785f81dfd73ca2e6d73bbf87b810ede9f42.gz [18c73af | Tue Dec 12 10:44:00 UTC 2006] manveru <m.fellinger@gmail.com> * fixing the tests for the templates to use the template_root darcs-hash:20061212114444-24576-817d5898abfaeab9b715406f9f48185fd306587b.gz [e9d209c | Tue Dec 12 10:43:00 UTC 2006] manveru <m.fellinger@gmail.com> * this fixes the template-lookup for ramaze, it's now also possible to use trait :template_root in the controller, please read the rdoc for more infos and a small example darcs-hash:20061212114348-24576-a31d08453aeec9bbb2acd8df2bd02d00c28702f0.gz [6320e6c | Tue Dec 12 10:43:00 UTC 2006] manveru <m.fellinger@gmail.com> * small cosmetic update darcs-hash:20061212114302-24576-b3f178023f3cb7efa7293c31b027eb0c2837f272.gz [9040de6 | Mon Dec 11 14:26:00 UTC 2006] manveru <m.fellinger@gmail.com> * LOTS of testcases added for markaby darcs-hash:20061211152655-24576-376ca819f9be3c5c7650c418f5daffb9953f4565.gz [ff885ad | Mon Dec 11 14:24:00 UTC 2006] manveru <m.fellinger@gmail.com> * this patch makes Template::Ramaze some magnitudes faster and adds some better security for the case someone is funny and tries to hack the HEREDOC darcs-hash:20061211152457-24576-804f9e41a822a70848cfda1b0b5ee07d4771a902.gz [e01267e | Mon Dec 11 14:24:00 UTC 2006] manveru <m.fellinger@gmail.com> * major upgrade for Markaby, should be finally running now :) darcs-hash:20061211152429-24576-d2a776a878537655f7ce10de068157f12d69622d.gz [03b70e9 | Mon Dec 11 14:23:00 UTC 2006] manveru <m.fellinger@gmail.com> * class-lookup in the error-template was a bit wrong darcs-hash:20061211152333-24576-1dc0fea672356ed06f44333b443aaad482f99432.gz [6facd7f | Mon Dec 11 14:23:00 UTC 2006] manveru <m.fellinger@gmail.com> * added Error::Template darcs-hash:20061211152319-24576-221dc843cd47c8634ba7cba0c28f0354584e38d8.gz [25596d9 | Mon Dec 11 13:27:00 UTC 2006] manveru <m.fellinger@gmail.com> * a little beautification :P darcs-hash:20061211142702-24576-04dd712af492a06808ed83e0f77748f3a4390cd5.gz [b5e4987 | Mon Dec 11 13:26:00 UTC 2006] manveru <m.fellinger@gmail.com> * lots of additions/changes in the tc_helper_link to reflect the changes made darcs-hash:20061211142604-24576-292e350a2200866953cc1f9c3db25009ca764ba8.gz [b238f81 | Mon Dec 11 13:25:00 UTC 2006] manveru <m.fellinger@gmail.com> * set the @action instance-variable for use in templates (the examples use it quite a bit, so i thought it would be useful) darcs-hash:20061211142529-24576-a592b7181c1a8f5e4f9332cba277e3c480673fdf.gz [edfc14c | Mon Dec 11 13:25:00 UTC 2006] manveru <m.fellinger@gmail.com> * require helper.rb in template.rb darcs-hash:20061211142503-24576-53086b8c73584cbd9ebcc978dd2706c451cf4f0d.gz [d12a690 | Mon Dec 11 13:24:00 UTC 2006] manveru <m.fellinger@gmail.com> * Trinity -> Helper update for template/stupid (no idea if we need that one at all anymore...) darcs-hash:20061211142432-24576-5679aa4cecefdf93cc3e6a7344d38fedb670221a.gz [882c95c | Mon Dec 11 13:23:00 UTC 2006] manveru <m.fellinger@gmail.com> * a little bit of moving around in Template::Ramaze, same changes for Helper instead of Trinity and removal of the helper-method for use in other templating-systems darcs-hash:20061211142322-24576-03c9bba6db7ef6cbc0d20545855fad9f51fa2fc1.gz [6767043 | Mon Dec 11 13:22:00 UTC 2006] manveru <m.fellinger@gmail.com> * Ramaze::Helper instead of Trinity for template/markaby darcs-hash:20061211142206-24576-87a1cc9e733a8435597badaac7222caf8fb00757.gz [7b83e7f | Mon Dec 11 13:20:00 UTC 2006] manveru <m.fellinger@gmail.com> * this adds the transform-method for conformity to Template::Erubis, also improved the template-lookup quite a bit and using Ramaze::Helper instead of Trinity darcs-hash:20061211142040-24576-9c2d492a21f7df4a952763fc5ef0d0a67a160c55.gz [062dc95 | Mon Dec 11 13:19:00 UTC 2006] manveru <m.fellinger@gmail.com> * use Ramaze::Helper instead of Trinity in template/amrita2 darcs-hash:20061211141949-24576-6e0e2b9e3a03eca5fc8553bac801e3eed456380a.gz [7c547a9 | Mon Dec 11 13:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * further improvments in the LinkHelper, not only can you now just pass self instead of self.class, but it also supports get-parameters in the ?foo=bar style - link(self, :foo => :bar) darcs-hash:20061211141842-24576-ed9dce6741fdd876e4d321ce8741aa7a03d05ef7.gz [8e9194a | Mon Dec 11 13:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * use Helper instead of Trinity in Ramaze::Controller darcs-hash:20061211141824-24576-89ce322e71e24ae5e9571572a6ba9f810a8455a8.gz [cb87f3b | Mon Dec 11 13:17:00 UTC 2006] manveru <m.fellinger@gmail.com> * this puts the helper-method into its own module that also includes Trinity for convinience darcs-hash:20061211141739-24576-bb07ee9690dda258ebddb8c59e6cc7e67aa636f3.gz [2ef9f65 | Mon Dec 11 13:15:00 UTC 2006] manveru <m.fellinger@gmail.com> * added examples for templating in ramaze and erubis, more to come darcs-hash:20061211141529-24576-e0ff8960e41753290fbc43a935bf4361dd0d9d66.gz [f367061 | Mon Dec 11 04:59:00 UTC 2006] manveru <m.fellinger@gmail.com> * added template/markaby with some tests (not all pass yet... lunchtime is just too short :) darcs-hash:20061211055911-24576-d11750388d4dd543442240328e132970a2e96fd2.gz [e1a979f | Sun Dec 10 08:28:00 UTC 2006] manveru <m.fellinger@gmail.com> * added testcase for link :title darcs-hash:20061210092841-24576-e8c73430e0fca4d714801855bcd35a8337724115.gz [d492ad9 | Sun Dec 10 08:27:00 UTC 2006] manveru <m.fellinger@gmail.com> * change from load()ing the helpers to require()ing them, so we can update them via autoreload as well (load doesn't add to the $LOADED_FEATURES...) darcs-hash:20061210092759-24576-a8d43ccb36d27eee2d54f0b2b9ea55868ff55a85.gz [3b6b1a0 | Sun Dec 10 08:27:00 UTC 2006] manveru <m.fellinger@gmail.com> * added redirect_referer to the RedirectHelper - it redirects you directly to where you come from. darcs-hash:20061210092718-24576-890d4ea7159187858d3f984c9807055410e2c070.gz [4d1bb5f | Fri Dec 08 15:57:00 UTC 2006] manveru <m.fellinger@gmail.com> * small fix for the LinkHelper - would't use :title proper if given more than '/' darcs-hash:20061208165738-24576-f896790c7138fcbfc7b389f65a732f8caeb7a675.gz [ee8e507 | Fri Dec 08 15:56:00 UTC 2006] manveru <m.fellinger@gmail.com> * this is the first stub for the new FormHelper, no real documentation or functionality here yet, mostly a summary of ideas that i need to reevaluate [ok... in reality my notebook ran out of power ;] darcs-hash:20061208165624-24576-ed6219b10ea14bbad0e198b775081ebac19393a0.gz [1d8eb00 | Fri Dec 08 15:54:00 UTC 2006] manveru <m.fellinger@gmail.com> * vast extension of the example/blog - added some templates and stuff to the controller, this will use the FormHelper (that i will stub soon) darcs-hash:20061208165451-24576-61b02fbf5dcdbbe1c5dc4aabf9826c9cee0155a5.gz [3ee1e8b | Fri Dec 08 15:49:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a simple testsuite for the blog-example, nothing too heavy yet. darcs-hash:20061208164948-24576-f125f7b1bac37d879f07c6155e380422b1b7e9fc.gz [430c132 | Thu Dec 07 13:09:00 UTC 2006] manveru <m.fellinger@gmail.com> * oops, almost forgot to check in this file :) darcs-hash:20061207140910-24576-7cede75bd5111ea6761a9902e1aba9f7c42da368.gz [4bbccd9 | Thu Dec 07 12:33:00 UTC 2006] manveru <m.fellinger@gmail.com> * a new error-page, totally implemented in Template::Ramaze instead of Gestalt, left the Gestalt one in there commented, not sure what i should do with it... use it as an example? (might horrify people though ;) darcs-hash:20061207133353-24576-1fde840672d06036389a33baac9c8e4c95a49c24.gz [ac04147 | Thu Dec 07 12:32:00 UTC 2006] manveru <m.fellinger@gmail.com> * Template::Ramaze.transform now takes an optional binding, gotta make this API nicer, since it also takes optional ivs... maybe :binding => binding, :ivs => {} - oh, and commented the nasty #[] for the time being darcs-hash:20061207133238-24576-88c4ca7d132ad0d6879fa639ed3bd6ee1b414718.gz [0a965a7 | Thu Dec 07 11:09:00 UTC 2006] manveru <m.fellinger@gmail.com> * use STATUS_CODE lookup instead of the direct error-codes darcs-hash:20061207120957-24576-5b092dd38ccb13b5915638cb857152bb6e126e75.gz [f9048ad | Thu Dec 07 11:02:00 UTC 2006] manveru <m.fellinger@gmail.com> * tc_session should use the new get/eget of Context darcs-hash:20061207120235-24576-86b79229c11358f7242e4bca6ce10cfedb1d8660.gz [ff7d681 | Thu Dec 07 11:02:00 UTC 2006] manveru <m.fellinger@gmail.com> * tc_helper_stack - added a logged_in? to the controller and doing more extensive testing for get and post using the new abilities of Context darcs-hash:20061207120225-24576-baae0875051f4eb0f60924d837d5ba3b94a922ae.gz [a268ddd | Thu Dec 07 10:58:00 UTC 2006] manveru <m.fellinger@gmail.com> * Context now uses eget/get instead of reqest/erequest to be look more like get(); also added post/epost, this is lots of fun ahead :) darcs-hash:20061207115836-24576-8b28a3652695dc4afd47fb7d985e48b3840de41b.gz [9ba411e | Thu Dec 07 10:35:00 UTC 2006] manveru <m.fellinger@gmail.com> * added test/tc_helper_stack - this is tests the new call/answer behaviour that works just like the one in nitro. please check the test for further understanding. darcs-hash:20061207113520-24576-5a8c1f5f17fe8dbc3f9368b61e716b405d723212.gz [edd93f5 | Thu Dec 07 10:34:00 UTC 2006] manveru <m.fellinger@gmail.com> * moving Context into test_helper - it is used to mock sessions darcs-hash:20061207113431-24576-662da43e7d776fc8ed4a4286a470ca4bb76014fe.gz [e277b6b | Thu Dec 07 10:33:00 UTC 2006] manveru <m.fellinger@gmail.com> * changing link_raw to R - you can also set titles now with link(:foo, :title => 'foo') darcs-hash:20061207113315-24576-ec17e5d830a4e48d49da415ef32cd15d56ee7b61.gz [dc925d3 | Thu Dec 07 09:58:00 UTC 2006] manveru <m.fellinger@gmail.com> * split tc_helper into tc_helper_redirect and tc_helper_link darcs-hash:20061207105849-24576-1c8047593ac3a8fb699299cc98d8683b1ef5efea.gz [da8fe75 | Thu Dec 07 09:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * huuge update for the testcases... to make it more testing-friendly we gotta use different controller-classes for each testcase, also the update of Global didn't allow a change of the used adapter, this is fixed now. darcs-hash:20061207103627-24576-d0282a2396028efb8c1485a3d17ab75b7764aa5d.gz [a7ba8e8 | Thu Dec 07 09:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * update todo for template/ramaze darcs-hash:20061207103610-24576-9874109fe49ae4ad61f8b83fe1f580462b144803.gz [ecde4bf | Thu Dec 07 09:35:00 UTC 2006] manveru <m.fellinger@gmail.com> * remove todo 'add host' for webrick, we do that since ages already ;) darcs-hash:20061207103534-24576-41b2c1f801a57b0bda9e653377f257498f293165.gz [ef55167 | Thu Dec 07 09:34:00 UTC 2006] manveru <m.fellinger@gmail.com> * some addtional changes... i really gotta fix the rcov-task... darcs-hash:20061207103459-24576-37171552e1305005d9c442f08b846374af07dc88.gz [71e987f | Thu Dec 07 09:32:00 UTC 2006] manveru <m.fellinger@gmail.com> * make output of rake todo a little bit nicer darcs-hash:20061207103226-24576-87865dd8cd231f85f66873e2fd78fe533ab6d32b.gz [7539e25 | Wed Dec 06 12:41:00 UTC 2006] manveru <m.fellinger@gmail.com> * dump version to 0.0.4 the first really nice and stable release darcs-hash:20061206134108-24576-4282e7dc585a247da6639d0d283cedbffc593b33.gz [0cc0f26 | Wed Dec 06 12:40:00 UTC 2006] manveru <m.fellinger@gmail.com> * don't pretty-inspect Global at startup anymore darcs-hash:20061206134005-24576-bb082dec1a4b518ff0076cdc2630d6045735890b.gz [147725d | Wed Dec 06 12:38:00 UTC 2006] manveru <m.fellinger@gmail.com> * we now have a proper interaction with Global via the bin/ramaze Usage: ramaze [switches] startfile [arguments] -a, --adapter=ADAPTER select an adapter [mongrel|webrick] -m, --mongrel use mongrel to process requests -w, --webrick the default --mode=LEVEL set the running-mode -b, --benchmark full logging with benchmarks, autoreload 5 -d, --debug the default, full logging, autoreload 5 -t, --stage log infos/errors, autoreload 10 -l, --live log errors, autoreload 20 -s, --silent no logging, autoreload 40 -o, --host which host should ramaze listen for requests default is 0.0.0.0 -p, --port what port should ramaze use default is 7000 -n, --no-errorpage don't use the default errorpage of ramaze helpful if you want to make sure noone can ever see your code by accident or for testing --template-root set a custom template-root for the whole application, please note that ~ is not expanded to your home-directory --autoreload=N set how frequent ramaze should search for updated files in your application default depends on the (-mode) -r, --run-loose don't take control after startup. this is useful for testcases. --cache use the simple caching based on the signature of your requests (experimental) --tidy run Tool::Tidy over text/html output -h, --help print this help -v, --version print the version -c, --copyright print the copyrith Please report bugs to <m.fellinger at gmail.com> darcs-hash:20061206133845-24576-8ca1965261247871e2fe2a7fe6f953af8e50fa70.gz [f85be74 | Wed Dec 06 12:38:00 UTC 2006] manveru <m.fellinger@gmail.com> * added doc/COPYING and doc/COPYING.ja from the ruby-distribution darcs-hash:20061206133813-24576-6dce17428ed19906a98b2a14b1c37dd24196f222.gz [7e18785 | Wed Dec 06 12:37:00 UTC 2006] manveru <m.fellinger@gmail.com> * added copyright to all .rb files darcs-hash:20061206133708-24576-fcf82ac5174a5d918f96d4e65ccceac6e3d4d26a.gz [93b55b5 | Wed Dec 06 10:30:00 UTC 2006] manveru <m.fellinger@gmail.com> * improved tc_controller a little bit darcs-hash:20061206113034-24576-a395fce09ddc23bb68c80610a72ca616b01f7858.gz [514f704 | Wed Dec 06 10:30:00 UTC 2006] manveru <m.fellinger@gmail.com> * tc_adapter should use get() instead of its own calling of open darcs-hash:20061206113012-24576-31993b23e711472159cc057d829e1c3e973f5e8d.gz [1d5c824 | Wed Dec 06 10:29:00 UTC 2006] manveru <m.fellinger@gmail.com> * default test-adapter is mongrel again, enables out-of-the-box testing darcs-hash:20061206112955-24576-b9af6099f93bd4b35e501586e1b0498806819cdc.gz [baf57d2 | Wed Dec 06 10:27:00 UTC 2006] manveru <m.fellinger@gmail.com> * wrapping webricks server.start in a Thread.new{} again, this provides proper handling of it again. also the default-response status is now 500 darcs-hash:20061206112710-24576-e061d8819a2e5396172cc13e30b2882304c3a569.gz [93a3bcb | Wed Dec 06 10:26:00 UTC 2006] manveru <m.fellinger@gmail.com> * removed the params/parse_params from adapter/webrick they will be handled in trinity/request now darcs-hash:20061206112643-24576-bc45f9f12b80d65d8e7f64cc5115cedcb05cef0f.gz [d927720 | Wed Dec 06 10:22:00 UTC 2006] manveru <m.fellinger@gmail.com> * moved the get?/post? methods into trinity/request also added put? and delete? for REST darcs-hash:20061206112201-24576-08f23e0306da128e5360e47514ee2ae9c8615ee4.gz [79f02c6 | Tue Dec 05 05:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * add tests for private methods to the controller darcs-hash:20061205063636-24576-ef1043e3fbf7be7c28578f7a1237cebad912f7a6.gz [e928ea9 | Tue Dec 05 05:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * raise error if no template is found in amrita2 darcs-hash:20061205063615-24576-df3c94bbe4e222c0b2999a5216c47d1cbb3b2e45.gz [b149b5e | Tue Dec 05 05:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * small typo in the blog-template darcs-hash:20061205063604-24576-08bf8b503129efbd2eea3d498dec6205edbc989a.gz [8cf7a1a | Mon Dec 04 13:11:00 UTC 2006] manveru <m.fellinger@gmail.com> * a rather huge structural change, we extract Trinity from Dispatcher and give it its own file, controller subsequently only exists as an optional Controller-namespace and to identify Controllers. moved request/response/session into their own trinity-directory. also changed the require to something plain, simple and maybe stupid, but every parser and reader will thank me ;) darcs-hash:20061204141148-24576-3898f168984ca49d0bf046c7848f35df38ed18af.gz [a23e041 | Mon Dec 04 12:47:00 UTC 2006] manveru <m.fellinger@gmail.com> * added extensions .ephp .ec .ejava .escheme .eprl .ejs - i have no idea yet how to implement them, but as a simple reminder ;) darcs-hash:20061204134749-24576-83f87c2a7eef014941842d7a33da41fd3743d535.gz [be27895 | Mon Dec 04 12:42:00 UTC 2006] manveru <m.fellinger@gmail.com> * change default-mode for tests to :debug darcs-hash:20061204134208-24576-70c322035031b8984dd95470a5a503e0705bf1d2.gz [f062a1d | Mon Dec 04 12:41:00 UTC 2006] manveru <m.fellinger@gmail.com> * do not catch errors in the test_helper anymore, everything seems fine now darcs-hash:20061204134152-24576-dc29f7c553e1f0777fbd95669c583d009d99ec44.gz [255f696 | Mon Dec 04 12:41:00 UTC 2006] manveru <m.fellinger@gmail.com> * changed the require-path to match the new require-style inside the testcases darcs-hash:20061204134116-24576-a8544e90217a4fce6d2a23960dac37b31ecb1ba0.gz [f97f9be | Mon Dec 04 12:40:00 UTC 2006] manveru <m.fellinger@gmail.com> * removed the non-working requireing of each testcase (which was previously commented out anyway) darcs-hash:20061204134030-24576-08cfad61e7c032d5746b67216d54dac5eee51ec1.gz [fb902e9 | Mon Dec 04 12:40:00 UTC 2006] manveru <m.fellinger@gmail.com> * added Template::Erubis darcs-hash:20061204134010-24576-78e51ad12c8f122b51966f879f97265aec472217.gz [4db70e3 | Mon Dec 04 12:39:00 UTC 2006] manveru <m.fellinger@gmail.com> * rewrote Template::Amrita2 in the way the implementation of Erubis worked out, a lot cleaner and straight-forward. will have to minimize the overhead of find_file though. darcs-hash:20061204133904-24576-dc64ca8c729206cf2b54d46871db1dfeccbf1249.gz [ae17fd7 | Mon Dec 04 12:34:00 UTC 2006] manveru <m.fellinger@gmail.com> * moved the controller out of the blog/main.rb to blog/src/controller.rb and added an EntryController to take advantage of Og darcs-hash:20061204133400-24576-9c4e043ad75fcdfd76fbf8b247d8656a8d638ca9.gz [a1564ac | Mon Dec 04 12:32:00 UTC 2006] manveru <m.fellinger@gmail.com> * added an index.rmze with the first extensive ramaze-template to the blog-example - it's supposed to list all the entries darcs-hash:20061204133234-24576-c6b1933b1ed3d42d3964205425ba46b135d75890.gz [553370b | Mon Dec 04 12:28:00 UTC 2006] manveru <m.fellinger@gmail.com> * prepare for erubis darcs-hash:20061204132812-24576-60e37b33e6fea59118e38f9050d732daa27b00a1.gz [a679d5f | Mon Dec 04 12:27:00 UTC 2006] manveru <m.fellinger@gmail.com> * avoid aliasing Kernel#method twice darcs-hash:20061204132739-24576-8ae5bfa21d1d2ac3b3b051a4b1c914d617d4c2a0.gz [54af80a | Mon Dec 04 12:27:00 UTC 2006] manveru <m.fellinger@gmail.com> * added tc_template_erubis and it passes :) darcs-hash:20061204132715-24576-4d92d3f355c776fe2bbb0026ae84ddf1e658682f.gz [4035547 | Mon Dec 04 12:26:00 UTC 2006] manveru <m.fellinger@gmail.com> * moved tc_amrita2 to test/ darcs-hash:20061204132655-24576-c038fa5bdeb3f72ff89bd358f475c9cdc5b7c9c7.gz [dfb2f5d | Mon Dec 04 12:26:00 UTC 2006] manveru <m.fellinger@gmail.com> * sane trait for the controller darcs-hash:20061204132637-24576-299d18cc595fe81491bf9bbf9900b7925664ea3b.gz [9fab545 | Mon Dec 04 12:25:00 UTC 2006] manveru <m.fellinger@gmail.com> * change all the requires to require a bit different... (insiede test only - it is now required that you run the tests from ../test which gives the whole thing a bit more substance) darcs-hash:20061204132534-24576-a98328e95be9f7412fcd6e7122e66eb0e6927345.gz [a6475e9 | Mon Dec 04 12:24:00 UTC 2006] manveru <m.fellinger@gmail.com> * add a simple template for erubis (standard-extension .rhtml) darcs-hash:20061204132455-24576-d174a61db4ab562dbecf6d8824510794dcf61746.gz [7b6a121 | Mon Dec 04 12:23:00 UTC 2006] manveru <m.fellinger@gmail.com> * rearrange the stuff inside test/template - move the tests in the basedir and use it soley for templates, less confusion, more efficient (just a bit uglier filenames :) darcs-hash:20061204132349-24576-341f111d32e3a0bb432b0664c1f084b4ed1eeb70.gz [d68a319 | Mon Dec 04 12:22:00 UTC 2006] manveru <m.fellinger@gmail.com> * give the standard-return-code of 500 if none is set. darcs-hash:20061204132251-24576-ef38c5adcbff2bf9912d3db510de77036cf7cfc8.gz [e24019d | Sun Dec 03 22:57:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a rcov-task to Rakefil and changed from catching only timeout to everything in the test_helper darcs-hash:20061203235715-24576-2a45dc09d253d1f86aa0a829091d6d92ec397a6f.gz [f5b87b3 | Fri Dec 01 12:59:00 UTC 2006] manveru <m.fellinger@gmail.com> * changed all testcases from usage of #[] to #{} darcs-hash:20061201135919-24576-dee34104a59167c90abe6e2c52808afe7f9b4761.gz [b9ea77d | Fri Dec 01 12:59:00 UTC 2006] manveru <m.fellinger@gmail.com> * extended the tc_template darcs-hash:20061201135900-24576-4597c2f40c9cbaf3d9a9a328eb8eafb00a2c59c7.gz [19dcbfb | Fri Dec 01 12:58:00 UTC 2006] manveru <m.fellinger@gmail.com> * LOADS of documentation for the template/ramaze and better implementation of the transform (avoiding easily used variables) darcs-hash:20061201135807-24576-2fd312a5af9907eb0ca9536707d2c34c3c0abc97.gz [9889223 | Fri Dec 01 12:57:00 UTC 2006] manveru <m.fellinger@gmail.com> * minor patch for the case that autoreload doesn't get a valid interval darcs-hash:20061201135724-24576-867ded137fe97fb943f20a2a271091420c0a26c3.gz [42deb0c | Fri Dec 01 12:57:00 UTC 2006] manveru <m.fellinger@gmail.com> * documentation for helpers darcs-hash:20061201135707-24576-f17d3acf391a7551a2984bea18c8b594816fb90c.gz [df5919f | Fri Dec 01 11:43:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a pretty good coverage of the helpers in test/tc_helper.rb darcs-hash:20061201124302-24576-2c68dbf9495fe6db2db51efe8af7150257a31899.gz [b0e4cbe | Fri Dec 01 11:42:00 UTC 2006] manveru <m.fellinger@gmail.com> * output of <?r ?> is no longer considered worthwhile, would have strange effects on arr.each or some other iterators who return self darcs-hash:20061201124212-24576-39e0fe46e21d123ab4794515dd6521e398e6c235.gz [e1e193c | Fri Dec 01 11:41:00 UTC 2006] manveru <m.fellinger@gmail.com> * adding a helper method to Template::Ramaze, use it like: helper :link, :redirect darcs-hash:20061201124110-24576-43e772e6349f4ba3b936529ad120ff944105fc4b.gz [62efb0b | Fri Dec 01 11:35:00 UTC 2006] manveru <m.fellinger@gmail.com> * redirect is now a helper too like LinkHelper, but even simpler RedirectHelper actually takes advantage of LinkHelper.link_raw to build the links it redirects to. It doesn't do much else than this: setting a status-code of 303 and a head['Location'] = link returning some nice text for visitors who insist on ignoring those hints :P example of usage: redirect MainController redirect MainController, :foo redirect 'foo/bar' still todo: - setting custom status-code, it ignores any preset ones at the moment - maybe some more options, like a delay darcs-hash:20061201123529-24576-09ebb1ce66a9df67405ef36267173e375d2e7e9b.gz [cdcf9d4 | Fri Dec 01 11:24:00 UTC 2006] manveru <m.fellinger@gmail.com> * added the LinkHelper, the first of the helpers it is included into the Template::Ramaze by default this helper tries to get along without any major magic, the only 'magic' thing is that it looks up controller-paths if you pass it a controller the text shown is always the last segmet of the finished link from split('/') usage is pretty much shown in test/tc_helper however, to give you some idea of how it actually works, some examples: link MainController, :foo #=> '<a href="/foo">foo</a>' link MinorController, :foo #=> '<a href="/minor/foo">foo</a>' link MinorController, :foo, :bar #=> '<a href="/minor/foo/bar">bar</a>' link MainController, :foo, :raw => true #=> '/foo' link_raw MainController, :foo #=> '/foo' link_raw MinorController, :foo #=> '/minor/foo' link_raw MinorController, :foo, :bar #=> '/minor/foo/bar' still todo: - handling of no passed parameters - setting of a custom link-title, possibly images as well - setting of id or class - taking advantae of Gestalt to build links - lots of other minor niceties, for the moment i'm only concerned to keep it as simple as possible darcs-hash:20061201122435-24576-e9ea29f3c4db1e49f7c770ecbce1f1d5ba1540ca.gz [a11db1b | Fri Dec 01 11:23:00 UTC 2006] manveru <m.fellinger@gmail.com> * total rewrite of the mongrel-adapter, passing around less stuff and making it a lot more readable darcs-hash:20061201122319-24576-71d5f39a771ea968b0a3e5d0f73eab8e493ab06d.gz [3e87201 | Fri Dec 01 11:20:00 UTC 2006] manveru <m.fellinger@gmail.com> * major update to the blog-example, it now works with Og and has a cleaner structure, also some simple templating and multiple controllers darcs-hash:20061201122054-24576-d1fa97034ae9ea611ed9a39a08a4b56ccfba348a.gz [b2af245 | Fri Dec 01 11:20:00 UTC 2006] manveru <m.fellinger@gmail.com> * update rake clean to delete leftover vim-tempfiles and data.db darcs-hash:20061201122023-24576-56d924fe14faf1e08ef020c74b53df16e286648a.gz [9af2d6f | Thu Nov 30 11:53:00 UTC 2006] manveru <m.fellinger@gmail.com> * commenting out the testcase for #[]! - this should not be used anymore, for now. darcs-hash:20061130125341-24576-9541c93556026db3db3123b83abc50865f4d1007.gz [e3703b0 | Thu Nov 30 11:52:00 UTC 2006] manveru <m.fellinger@gmail.com> * remark about the odd behaviour of the return of a POST, suddenly it just didn't fail anymore, and i have no idea how to reproduce it. darcs-hash:20061130125252-24576-17fe4989a620aa67090eaf9a9711a323a746ad02.gz [4ed7c7a | Thu Nov 30 11:52:00 UTC 2006] manveru <m.fellinger@gmail.com> * the raise just changes too often, this time i just check for raise - maybe we get more consistent behaviour later on, but for now i'll let it be darcs-hash:20061130125208-24576-2e45a7e759ff8111f845ad2e248ee9023e379bf2.gz [ed47510 | Thu Nov 30 11:51:00 UTC 2006] manveru <m.fellinger@gmail.com> * extended tc_global darcs-hash:20061130125152-24576-95afffa00b124fbae5e3eac882a40c06440eb3ed.gz [650f75a | Thu Nov 30 11:51:00 UTC 2006] manveru <m.fellinger@gmail.com> * the test_helper methods have now sane timeouts to make things fail faster darcs-hash:20061130125120-24576-319a9eb88178b815f5736251ab2906e486b892c7.gz [1370b4a | Thu Nov 30 11:50:00 UTC 2006] manveru <m.fellinger@gmail.com> * just another way to run the tests, commented due to non-functionality darcs-hash:20061130125047-24576-3a918ae7cc19dfad8e912835808681beb1ccf4d2.gz [06635ec | Thu Nov 30 11:50:00 UTC 2006] manveru <m.fellinger@gmail.com> * marking the adapter-thread with [:task] = :adapter to make killing easier darcs-hash:20061130125010-24576-f73309df659821c73f329fb115ea9d936a0e4bd6.gz [54ecda3 | Thu Nov 30 11:49:00 UTC 2006] manveru <m.fellinger@gmail.com> * give Global responsibility for update itself, makes ramaze.rb cleaner darcs-hash:20061130124937-24576-67fa78f7d2764e9f819b2647e7682179ff5832d3.gz [2e114ab | Thu Nov 30 11:49:00 UTC 2006] manveru <m.fellinger@gmail.com> * comment about the bad behaviour of #[] in templates darcs-hash:20061130124915-24576-441b9beca60d91f18f431e09d89d1e990da8ced0.gz [122372b | Thu Nov 30 11:48:00 UTC 2006] manveru <m.fellinger@gmail.com> * marking the autoreload-thread with the new Thread.current[:task] = :autoreload - to make them easier to identify... all threads in Ramaze should have a [:task] from now on darcs-hash:20061130124821-24576-e1e0b147e9ba26218ec0668b2415ded03f22c0eb.gz [837d8fc | Thu Nov 30 11:47:00 UTC 2006] manveru <m.fellinger@gmail.com> * give poor request a request.params for get/post parameters (post has precendence) darcs-hash:20061130124734-24576-1026799de5bcbc779f5583c6d287b408223afd1b.gz [4a93665 | Thu Nov 30 11:47:00 UTC 2006] manveru <m.fellinger@gmail.com> * replacing Global with something totally new, we should create dynamic methods though to get some minor speedup darcs-hash:20061130124709-24576-41671176acced0d5aacac8c311ef8234ac6b76cd.gz [adf4f66 | Thu Nov 30 11:45:00 UTC 2006] manveru <m.fellinger@gmail.com> * do not use start in examples/simple darcs-hash:20061130124503-24576-3b84e18859dfbce63014adf9ef7313accff2fef8.gz [4c190c1 | Thu Nov 30 05:53:00 UTC 2006] manveru <m.fellinger@gmail.com> * embedding tc_amrita2 correctly into a ramaze{} block darcs-hash:20061130065356-24576-326ba1783830a40cf06239ac0af10629c1dedc2b.gz [bb3d49e | Thu Nov 30 05:53:00 UTC 2006] manveru <m.fellinger@gmail.com> * typo darcs-hash:20061130065347-24576-172ae7b3b839533b8039d01bf3895d2e4e63fbf6.gz [b8b9149 | Thu Nov 30 05:53:00 UTC 2006] manveru <m.fellinger@gmail.com> * adding net/http to test_helper and make some text nicer ;) darcs-hash:20061130065308-24576-a5493e92f6f343dfc4f7b71700e2d3cfb3c43244.gz [619e2fc | Thu Nov 30 05:52:00 UTC 2006] manveru <m.fellinger@gmail.com> * this is a fix in case some testcase just hangs, at least you will know which one does darcs-hash:20061130065233-24576-6651d828dcfa5e254dc6b8a6da55a2c4921dc7e8.gz [0009b1c | Thu Nov 30 05:51:00 UTC 2006] manveru <m.fellinger@gmail.com> * finally fixed the adapter-startup, at least for mongrel... still very weird issues with webrick darcs-hash:20061130065134-24576-84a485d1fd9deab33e5d19b04940797f985ae92e.gz [2ef2188 | Thu Nov 30 05:50:00 UTC 2006] manveru <m.fellinger@gmail.com> * start a new process on rake test, avoids possible side-effects darcs-hash:20061130065049-24576-3feaca6c1a68f14d843027d5af21b479eac0e179.gz [36e97dd | Thu Nov 30 04:41:00 UTC 2006] manveru <m.fellinger@gmail.com> * patching the testcases to fit in the new way of testing darcs-hash:20061130054152-24576-cf6e6c414eab116904eff5ec4db10ce58aeb0067.gz [e2f72cd | Thu Nov 30 04:40:00 UTC 2006] manveru <m.fellinger@gmail.com> * we add a nice testing-block called ramaze, you pass it a hash for startup-options and a block and it does setup/teardown... specify-driven would take too long and is too verbose darcs-hash:20061130054058-24576-0b287de75c7d0aac92070a988b93f234a84e9ffa.gz [d2134f1 | Thu Nov 30 04:40:00 UTC 2006] manveru <m.fellinger@gmail.com> * nicer output of all_tests darcs-hash:20061130054042-24576-9d7663c71529d86a63443ded206477c542a86727.gz [7c64232 | Thu Nov 30 04:39:00 UTC 2006] manveru <m.fellinger@gmail.com> * this should improve the startup-behaviour for the adapters... there must be bugs lurking in there though. darcs-hash:20061130053957-24576-b699ae715c143bbce44da8eb0316d2b09dbd4043.gz [aa095c7 | Thu Nov 30 04:38:00 UTC 2006] manveru <m.fellinger@gmail.com> * update the global nicer on startup, we have no idea what the user passes or has set already, so be very careful as well (not you, ramaze) darcs-hash:20061130053854-24576-73d04ac85fd59e5bfc42fb78cb42542bb8e3389f.gz [391c919 | Thu Nov 30 04:38:00 UTC 2006] manveru <m.fellinger@gmail.com> * kill all threads except for main on exit... i need some way to get out nicely without exit... darcs-hash:20061130053814-24576-d581596f95c69725da93208475edeb55789f2d0d.gz [b25315f | Thu Nov 30 04:37:00 UTC 2006] manveru <m.fellinger@gmail.com> * this is a major improvment for the Template::Ramaze - passing (almost) all tests, just slight problems with #[] still darcs-hash:20061130053725-24576-d82bba94ff016013e4d1a1306371ebce6d0b6048.gz [8193970 | Thu Nov 30 04:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * slightly more expressive code in response-creation darcs-hash:20061130053655-24576-0e6fbef144c83ebbe5b6044f657634ee258471ae.gz [b7d548e | Thu Nov 30 04:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * no thread in thread anymore for webrick darcs-hash:20061130053633-24576-cb60db9810bc802131df0e48ddc6bc05057d4e96.gz [3b413fd | Thu Nov 30 04:35:00 UTC 2006] manveru <m.fellinger@gmail.com> * just start up ramaze, we ignore the problem that it might be started already since we never can be sure and people would partially build trust on it despite that fact - so as a rule, don't start your files manually if you want bin/ramaze to start it darcs-hash:20061130053507-24576-72104887a36ee5f633ad3059c73cf612155f6c12.gz [ab87c7c | Wed Nov 29 07:44:00 UTC 2006] manveru <m.fellinger@gmail.com> * added the templates for the tc_template in test/template/ darcs-hash:20061129084401-24576-effe72a2333fdd7e8406e7c6fa5ed25b6d5e55a8.gz [16ad074 | Wed Nov 29 05:22:00 UTC 2006] manveru <m.fellinger@gmail.com> * major change in the templating... now using <%= %> <% %> <?r ?> #[] - this needs some extensive testing and is not fully done yet, but getting there... darcs-hash:20061129062205-24576-bed7cc467a8fff8e09f5d3feec06fc0fcf2d58e6.gz [e0ce3a6 | Wed Nov 29 05:21:00 UTC 2006] manveru <m.fellinger@gmail.com> * added tc_template darcs-hash:20061129062143-24576-dd582ee4d41cbb5c8d7f33dad3ecdeaca6d5c1b6.gz [45fd37d | Tue Nov 28 11:44:00 UTC 2006] manveru <m.fellinger@gmail.com> * this improves the templating a tiny bit... however #[]! still fails, we need some serious regex-magic here. darcs-hash:20061128124422-24576-578264d9af2a67333d626c3c8939fc56bc4036d7.gz [33621b2 | Tue Nov 28 11:33:00 UTC 2006] manveru <m.fellinger@gmail.com> * saner tc_store darcs-hash:20061128123321-24576-d6d799dca04ccfd29db1398542cfa659a906e6e0.gz [bb99dec | Tue Nov 28 11:32:00 UTC 2006] manveru <m.fellinger@gmail.com> * improved templating further, now, if a template-file is given and returns something useful we discard the stuff from the controller-method and use that instead darcs-hash:20061128123232-24576-8682d2b7daf5260eb3a1ccdea2aefa116a9ed502.gz [c4bb9db | Tue Nov 28 11:32:00 UTC 2006] manveru <m.fellinger@gmail.com> * touch the db before initializing the default-store darcs-hash:20061128123209-24576-774b85e3da1ad963382263cc6f7e078867d38c5e.gz [1009f6a | Tue Nov 28 11:31:00 UTC 2006] manveru <m.fellinger@gmail.com> * minor patch for mongrel-cookies darcs-hash:20061128123149-24576-938ef1ea72579ae68d5a3dc42cdeae4b0722b6bd.gz [912df42 | Tue Nov 28 10:57:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a mostly-stub for the new blog-example darcs-hash:20061128115759-24576-f56cb5673a4c4e2bdd36b8d0ccd2b628aa6b965a.gz [82d886a | Tue Nov 28 10:57:00 UTC 2006] manveru <m.fellinger@gmail.com> * added the default-store, this is just a very simple wrapper over YAML::Store and doesn't offer anything really... just to satisfy the tests darcs-hash:20061128115713-24576-8c079cf1798ae3af461602e5bde1b1010c8285db.gz [7078da1 | Tue Nov 28 10:56:00 UTC 2006] manveru <m.fellinger@gmail.com> * move the test-request-methods over from test_get/test_post/request to get/post darcs-hash:20061128115620-24576-d33dc5c7cf6ae44b87d25be45c15b1e288f8629c.gz [0e978f4 | Tue Nov 28 10:54:00 UTC 2006] manveru <m.fellinger@gmail.com> * update to test_helper, now using get/post instead of test_get/test_post or request darcs-hash:20061128115456-24576-34d3bd1974a786b508f26fe1976c463eb4568da8.gz [9386172 | Tue Nov 28 10:53:00 UTC 2006] manveru <m.fellinger@gmail.com> * Template::Ramaze now supports extremly simple templating with #[expr] - more to come darcs-hash:20061128115326-24576-5a713f8aebf499b765319581a1f017009e69aebc.gz [85da730 | Tue Nov 28 10:53:00 UTC 2006] manveru <m.fellinger@gmail.com> * fixing sessions for webrick darcs-hash:20061128115313-24576-282dc5fc58a033d058491733f301de62325039a0.gz [4123fff | Tue Nov 28 10:52:00 UTC 2006] manveru <m.fellinger@gmail.com> * updated README with coderay-info darcs-hash:20061128115254-24576-c9f7d7eec18e252e9a8e6f6cf86b8168827fe332.gz [26206d3 | Tue Nov 28 10:51:00 UTC 2006] manveru <m.fellinger@gmail.com> * don't be so verbose about missing coderay, if someone wants it we should mention it in the README darcs-hash:20061128115122-24576-4f48b9e2ba6c202f443e55ab95e2b0e2d19e119a.gz [bc5917f | Tue Nov 28 10:49:00 UTC 2006] manveru <m.fellinger@gmail.com> * moving from ann to trait darcs-hash:20061128114931-24576-d88903712e7f7b1c0ce1bfdc0daac85bcb2f3803.gz [a76642d | Tue Nov 28 10:47:00 UTC 2006] manveru <m.fellinger@gmail.com> * just a FIXME darcs-hash:20061128114737-24576-c9d32edce1540a7262357b9aa775c589befd358d.gz [f1602de | Tue Nov 28 10:45:00 UTC 2006] manveru <m.fellinger@gmail.com> * lots of improved compatibility between the mongrel and webrick adapter, added respone.content_type darcs-hash:20061128114548-24576-2af8615dff8474340b2a2c61cb5b7da63ad0ef11.gz [4564e6d | Tue Nov 28 10:44:00 UTC 2006] manveru <m.fellinger@gmail.com> * Socket.do_not_reverse_lookup = true # for OSX darcs-hash:20061128114454-24576-7d969b5ef2de10c47a93196a0387fd8c93d3e80b.gz [f933e99 | Tue Nov 28 10:43:00 UTC 2006] manveru <m.fellinger@gmail.com> * removed some debugging-info about timeouted darcs-hash:20061128114306-24576-c4ce41d80cdc8db34437e57de5ecb193856ecf23.gz [389379b | Tue Nov 28 10:42:00 UTC 2006] manveru <m.fellinger@gmail.com> * added small doc-snippets to the simple example about error-page darcs-hash:20061128114234-24576-95c3a4b2c857854b70640b01413e5359b3092f72.gz [63c9ac5 | Tue Nov 28 10:42:00 UTC 2006] manveru <m.fellinger@gmail.com> * added indication which file is ran by bin/ramaze darcs-hash:20061128114210-24576-75f18c03141123a11bfc5637ba6bbd744238ef82.gz [7b5da71 | Tue Nov 28 10:40:00 UTC 2006] manveru <m.fellinger@gmail.com> * simplified ann, which is now trait (should be double speed ;) darcs-hash:20061128114047-24576-a71ceb4cd64b003c9824b6d9604072c3b5f0c9e2.gz [28bac4e | Tue Nov 28 10:40:00 UTC 2006] manveru <m.fellinger@gmail.com> * moved add.rb to traits.rb to avoid conflicts with facets (used by Og) darcs-hash:20061128114002-24576-c5948cd8bf1de192088765d269752d143b1b4971.gz [281309d | Fri Nov 24 04:37:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a testcase for sum (from example/simple) darcs-hash:20061124053707-24576-cc01d59ab77751947a4688113373b8fc35217feb.gz [0154200 | Fri Nov 24 04:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a timeout if the port is already used, otherwise it would retry indefinitly darcs-hash:20061124053632-24576-4e9fd7c953c61721090e5eef01e8a535b93168c6.gz [c69b09a | Fri Nov 24 04:32:00 UTC 2006] manveru <m.fellinger@gmail.com> * change the default-adapter to webrick for all the poor lads who don't have mongrel yet darcs-hash:20061124053215-24576-cc76e90d83ffec1a963cb404fc417b0a05f1cfc7.gz [b3fb7d0 | Fri Nov 24 04:31:00 UTC 2006] manveru <m.fellinger@gmail.com> * added lots of docs and further examples in examples/simple.rb darcs-hash:20061124053113-24576-00ac67df09b04b9a37f24a294508eff2c07e908a.gz [59940f7 | Fri Nov 24 04:11:00 UTC 2006] manveru <m.fellinger@gmail.com> * added some more docs to hello.rb darcs-hash:20061124051106-24576-c5b5e438b2795d55a234b174516cba57d9748d26.gz [d730ed9 | Wed Nov 22 09:50:00 UTC 2006] manveru <m.fellinger@gmail.com> * upgrade of rspec to 0.7 darcs-hash:20061122105027-24576-4858fce5a0c424effb2b7aaf0801db7c6ca90092.gz [02d8dbd | Sun Nov 05 10:09:00 UTC 2006] manveru <m.fellinger@gmail.com> * updated CHANGELOG and a bit of docu in tidy darcs-hash:20061105110904-24576-c7950d6dfe945b88363bd18e3fcc5ea2d000c81f.gz [64af941 | Sun Nov 05 07:44:00 UTC 2006] manveru <m.fellinger@gmail.com> * more efficient lookup of the libtidy.so, still relying on `locate`, but you can set it yourself now with Ramaze::Tool::Tidy.ann[:path] darcs-hash:20061105084420-24576-ae877f052c46d55275fdcd64f1a002f8602e02a0.gz [971f2d7 | Sun Nov 05 07:42:00 UTC 2006] manveru <m.fellinger@gmail.com> * fixing the amrita2 controller to find the correct path for templates (ann[:template_root] to override it) darcs-hash:20061105084238-24576-4cfe60620ab0812cf40c85aa98bc2dfac44487d8.gz [6dd3512 | Sun Nov 05 07:42:00 UTC 2006] manveru <m.fellinger@gmail.com> * patches to dispatcher, proper handling of caching and actionless controllers in case of / => index darcs-hash:20061105084202-24576-fcc9178331d7cbaf692e069258012fba8377ffb8.gz [cbdff82 | Sun Nov 05 07:40:00 UTC 2006] manveru <m.fellinger@gmail.com> * fixing the tc_controller and added the amrita template for the controller testcase, also added the annotation for template_root darcs-hash:20061105084015-24576-23fc564f0e60b159f166a1f709f7cde84dcde6db.gz [2995439 | Sun Nov 05 03:57:00 UTC 2006] manveru <m.fellinger@gmail.com> * updated the Rakefile and changed to version 0.0.3 - one todo marked as done darcs-hash:20061105045758-24576-c1838562211181eedc16670417b184b1303e5344.gz [b6a3ac2 | Thu Nov 02 14:13:00 UTC 2006] manveru <m.fellinger@gmail.com> * changed the amrita testcase to work darcs-hash:20061102151331-24576-5a6764dff4072696b78203210a0ae54e6536461e.gz [10bf8b1 | Thu Nov 02 14:13:00 UTC 2006] manveru <m.fellinger@gmail.com> * default testmode is now :live instead of :silent darcs-hash:20061102151316-24576-e619addc8ed3470edb7221673b7f33fecfd13f9a.gz [8ad2aa6 | Thu Nov 02 14:12:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a simple YAMLstore... to be replaced by the real thing darcs-hash:20061102151244-24576-dd45d3f9eb0ffb00ead035cfeca5eb1fdd819566.gz [8055d27 | Thu Nov 02 14:12:00 UTC 2006] manveru <m.fellinger@gmail.com> * the dispatcher respects actionless controllers now (Amrita2) darcs-hash:20061102151229-24576-1c80e8f0f83ec1a382dc815ce1727c539dcfbb74.gz [30ccd28 | Thu Nov 02 14:10:00 UTC 2006] manveru <m.fellinger@gmail.com> * added trinity in most places and using the annotations now, also a bit of cleanup darcs-hash:20061102151047-24576-d497f66bae4ab0974229dd3882b81fbd8a5deb81.gz [2be41ca | Thu Nov 02 14:10:00 UTC 2006] manveru <m.fellinger@gmail.com> * added trinity, to be extracted darcs-hash:20061102151013-24576-ee5d9388a75d258ec1286f2e399921527894bdc2.gz [916c4d0 | Thu Nov 02 14:10:00 UTC 2006] manveru <m.fellinger@gmail.com> * added self_method darcs-hash:20061102151005-24576-067f8051720fe84dd0660f09fe203fc1bec915ae.gz [9e2eb5f | Thu Nov 02 14:09:00 UTC 2006] manveru <m.fellinger@gmail.com> * added new Annotation darcs-hash:20061102150953-24576-ca227487f5fdbf19271ab046fc98567ee07dbe16.gz [11811cb | Thu Nov 02 14:09:00 UTC 2006] manveru <m.fellinger@gmail.com> * added favicon and logo darcs-hash:20061102150926-24576-cd8c129632050e6de3cbd5c46d9076b633a4a455.gz [d39422c | Tue Oct 31 22:00:00 UTC 2006] manveru <m.fellinger@gmail.com> * added testcases for controller and templating of amrita2/ramaze - they still have to be made passing darcs-hash:20061031230049-24576-3acf683085b4b3c4ab276140c3a602519ad8bdb5.gz [5ef58d2 | Thu Oct 26 08:39:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a setup for tc_adapter, makes it a bit slower but a lot better darcs-hash:20061026103945-24576-6159bfe96816f121a00054ed20fb1b738a9a2032.gz [3a8eb96 | Thu Oct 26 08:29:00 UTC 2006] manveru <m.fellinger@gmail.com> * after fix in mongrel, this should work nice again and the tcs should pass darcs-hash:20061026102922-24576-661cf9b7966cf375e853e1595d02f3d75b86f76b.gz [644c4e8 | Thu Oct 26 08:29:00 UTC 2006] manveru <m.fellinger@gmail.com> * more elegant tc_gestalt darcs-hash:20061026102900-24576-79190fabb0beca28f93cad45b3e76ebd954647bd.gz [b9fecab | Thu Oct 26 08:28:00 UTC 2006] manveru <m.fellinger@gmail.com> * finish up in the ramaze.rb and bring together the loose ends darcs-hash:20061026102835-24576-09721be53c0e7508d0581ce08b9e4679146e4d84.gz [7a3eb75 | Thu Oct 26 08:28:00 UTC 2006] manveru <m.fellinger@gmail.com> * rewrote the ramaze-template darcs-hash:20061026102812-24576-22d819e851717aed3698279761dd1d8efc66996b.gz [530547f | Thu Oct 26 08:27:00 UTC 2006] manveru <m.fellinger@gmail.com> * autoreload is now a method in Ramaze and i added a Global.autoreload hash that holds the autoreload-times for the hashes, additionally there is the new :benchmark mode darcs-hash:20061026102716-24576-63b3cde5609155ca72b923ef44c684d1dc795681.gz [51def23 | Thu Oct 26 08:26:00 UTC 2006] manveru <m.fellinger@gmail.com> * added pretty_inspect to the response to fit better into the new error-page darcs-hash:20061026102608-24576-f31e199b1329811c418432c6972b978bae516758.gz [02f47c6 | Thu Oct 26 08:25:00 UTC 2006] manveru <m.fellinger@gmail.com> * implemented the logger-todos darcs-hash:20061026102558-24576-ac1e4ec56d19be5fcca0312c07ead73c5e7813bd.gz [d6fb1b6 | Thu Oct 26 08:24:00 UTC 2006] manveru <m.fellinger@gmail.com> * Gestalt is now no subclass of BlankSlate anymore... it was unneccesary and just complicating the whole code. using the simple p-hack again darcs-hash:20061026102455-24576-3c7588c6ce9516f5e37f972e90eacb6fbc78ecc0.gz [33bfd2a | Thu Oct 26 08:24:00 UTC 2006] manveru <m.fellinger@gmail.com> * a really huge update to the errorpage again... remember to remove the logo ;) darcs-hash:20061026102420-24576-61b4abe190225e85a630ca51a00a1ce67977df28.gz [f6283bd | Thu Oct 26 08:23:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a timeout to the dispatcher and removed some annoying return-statements darcs-hash:20061026102354-24576-079eca22359aae7b1317be0002c16b74800700ba.gz [868cbef | Thu Oct 26 08:23:00 UTC 2006] manveru <m.fellinger@gmail.com> * added response method to controller-prototype darcs-hash:20061026102334-24576-fd3b6dfbcab79f38423a757ac978052989623f5c.gz [d8f8265 | Thu Oct 26 08:23:00 UTC 2006] manveru <m.fellinger@gmail.com> * adapter have now the possibilities to bench requests when mode is :benchmark darcs-hash:20061026102317-24576-6f7fc2109be50cbfb056778b84d110de5ef998b5.gz [2e2679e | Thu Oct 26 08:20:00 UTC 2006] manveru <m.fellinger@gmail.com> * updated the miniwiki to use YAML::Store and work correctly in general darcs-hash:20061026102058-24576-6f548ce0f468adc2671882170eef1703844e1fe5.gz [4ff907c | Mon Oct 23 08:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a testcase for params and proper handling of the errors now. (thanks mfp) darcs-hash:20061023103640-24576-0357d3cc918bf90496275c7cada7b0f8feb5efeb.gz [bd39d15 | Mon Oct 23 08:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * output the error if tidy fails darcs-hash:20061023103629-24576-6d548d6243386512f388e354ba3ed80472d5c804.gz [93e930d | Mon Oct 23 08:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * adding __instance_variable_set__ to Gestalt to better handle iv without evaling darcs-hash:20061023103605-24576-120725f1544929040ed223296818142419705d52.gz [e3d07de | Mon Oct 23 08:35:00 UTC 2006] manveru <m.fellinger@gmail.com> * better handling of CodeRay inside error-template darcs-hash:20061023103522-24576-78200640ca24506d1803f08c25f6c52b9e6d1d3b.gz [4f57c73 | Mon Oct 23 08:34:00 UTC 2006] manveru <m.fellinger@gmail.com> * little cleanup and adding documentation in the error-page darcs-hash:20061023103449-24576-2057246bbfc218e63d4d9c230b03f4401b977a8e.gz [187165f | Mon Oct 23 08:34:00 UTC 2006] manveru <m.fellinger@gmail.com> * proper handling of -1 params darcs-hash:20061023103426-24576-e765c3165f9090da22f8bc9e83f87b3457ace892.gz [4318545 | Mon Oct 23 08:33:00 UTC 2006] manveru <m.fellinger@gmail.com> * adding proper params-handling for webrick, (very very bad proper handling) darcs-hash:20061023103354-24576-b1b4201f860a3928ff58efc1730c151793d98356.gz [138a535 | Mon Oct 23 08:33:00 UTC 2006] manveru <m.fellinger@gmail.com> * remove the require 'rubygems' and error-handling from the adapter itself, that is handled one level lower darcs-hash:20061023103323-24576-0fa45116c79902b3f20c369b2641177aaa27ee4d.gz [bc7454d | Mon Oct 23 08:33:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a default in public/css/coderay.css since i will use it quite often. darcs-hash:20061023103303-24576-5ea5c82b19b3188196dfb81f3f2fb3abf6b0a368.gz [5ac295a | Mon Oct 23 08:32:00 UTC 2006] manveru <m.fellinger@gmail.com> * first templates for Ramaze (called .rmze) and a proper working miniwiki-example - very very simplistic, but does its job so far darcs-hash:20061023103203-24576-b0cc501d93344a6952c1c05e3e7d9a10fc86b33d.gz [c61a947 | Mon Oct 23 08:31:00 UTC 2006] manveru <m.fellinger@gmail.com> * yay for my new miniwiki example :) darcs-hash:20061023103135-24576-e22832473f53de0d7670c9fb63024f9f5bb9e9e0.gz [be33172 | Mon Oct 23 06:01:00 UTC 2006] manveru <m.fellinger@gmail.com> * use webrick in the miniwiki darcs-hash:20061023080105-24576-f381d47d4b30b36693c7865b4ce84e22c3465940.gz [9de7600 | Mon Oct 23 05:57:00 UTC 2006] manveru <m.fellinger@gmail.com> * added codray-highlighting (if installed) and inspecting of request/session/response/global darcs-hash:20061023075757-24576-a84532c4148882ca0d549255331f5c614f49217c.gz [db8b841 | Mon Oct 23 05:23:00 UTC 2006] manveru <m.fellinger@gmail.com> * better handling if the adapter is not found and don't kill the autoreload-threads anymore darcs-hash:20061023072309-24576-b581f58d9e1401d53dce3e334a9ab82eea6b8990.gz [3d6323a | Mon Oct 23 05:21:00 UTC 2006] manveru <m.fellinger@gmail.com> * update of the Global defaults (most important, added Global.logger[:timestamp|:prefix_(info|error|debug)] darcs-hash:20061023072117-24576-e2f1c72e8c7231eb601fb82a533596bb63406ce9.gz [27deb52 | Mon Oct 23 05:20:00 UTC 2006] manveru <m.fellinger@gmail.com> * replaced autoreload with the new one (and some settings for the reload-speed based on the Global.mode darcs-hash:20061023072033-24576-cc8a8581a76ce14f701e83cd6c17866e65f6d77d.gz [7991d8c | Mon Oct 23 05:19:00 UTC 2006] manveru <m.fellinger@gmail.com> * replaced the Module.autoload with a require beforehand... the other way just added complexitiy though it's a nice thing :) darcs-hash:20061023071953-24576-af82791891fdedb20c955af46f89ad437b368581.gz [a7b454c | Mon Oct 23 05:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * usage of Tidy.tidy now possible darcs-hash:20061023071844-24576-a5b2abb72a51c14ec805c8334b1ed31ec603c0b1.gz [795282d | Mon Oct 23 05:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * reimplementation of autoreload darcs-hash:20061023071822-24576-d4afbe14513f69a3c575b04223449bb87e6f8d00.gz [37c1cc7 | Mon Oct 23 05:17:00 UTC 2006] manveru <m.fellinger@gmail.com> * little update in the request, in case there is no @request.params (webrick) darcs-hash:20061023071742-24576-4688f80cd2377ae52ca676d2c0da58d6d5c6c33a.gz [33f39ad | Mon Oct 23 05:16:00 UTC 2006] manveru <m.fellinger@gmail.com> * rather large update to the error-page... not fully finished i fear - but i added CSS so it's going to be nicer to change :) darcs-hash:20061023071643-24576-d4e2a63b87ae2bbebcf2d8c95a8b0646a24b79ee.gz [8738386 | Mon Oct 23 05:16:00 UTC 2006] manveru <m.fellinger@gmail.com> * better use of the Logger in the dispatcher darcs-hash:20061023071615-24576-a26c07559de9543505a27e72291427e6a7e9b5b0.gz [6ed6411 | Mon Oct 23 05:13:00 UTC 2006] manveru <m.fellinger@gmail.com> * a rather huge update to the logger, introducing the Global.logger hash to easily define your own favorite settings, also we got a Timestamp now! :) darcs-hash:20061023071312-24576-0a323bacd01c6f8a45449ee97fda41b4d53e5c79.gz [eb13a32 | Mon Oct 23 05:11:00 UTC 2006] manveru <m.fellinger@gmail.com> * updates to the mongrel-adapter, better rescue for rubygems/mongrel and nicer usage of Tidy darcs-hash:20061023071149-24576-3f9b6e35f22bebf729935b08834161ed89ccf6d8.gz [12b5d9a | Mon Oct 23 05:11:00 UTC 2006] manveru <m.fellinger@gmail.com> * small updates to the simple example darcs-hash:20061023071110-24576-16b0f36f4ad027119db05cffa7082ff5d1cdf210.gz [dd9a1d1 | Mon Oct 23 05:08:00 UTC 2006] manveru <m.fellinger@gmail.com> * added the webrick-adapter, it's not perfect, but works smooth so far darcs-hash:20061023070843-24576-3b8bcffc5d74a971061820d3f1743e54cb8e6663.gz [a4a3576 | Mon Oct 23 05:07:00 UTC 2006] manveru <m.fellinger@gmail.com> * added testcase for the adapters (tc_adapter) [mongrel|webrick] so far darcs-hash:20061023070746-24576-eb3526725305cf535de10cfccfbb5173ecb61baa.gz [29af7b6 | Sun Oct 22 22:13:00 UTC 2006] manveru <m.fellinger@gmail.com> * moved the HTTP-status codes to http_status.rb from dispatcher.rb darcs-hash:20061023001327-24576-3f62a51a21ad2cd666ff89f6a06b5b239b1c7290.gz [a2b01e0 | Sun Oct 22 21:33:00 UTC 2006] manveru <m.fellinger@gmail.com> * small typo in Logger.debug output ('d-' instead of 'd') darcs-hash:20061022233305-24576-20eb8e89ca8bd8c1678f5269abb1328e62dff11c.gz [ccd9b67 | Sun Oct 22 21:29:00 UTC 2006] manveru <m.fellinger@gmail.com> * added stub for miniwiki darcs-hash:20061022232914-24576-fbb77a2eaec984379f91970b4081b4738d8554cf.gz [456664c | Fri Oct 20 07:55:00 UTC 2006] manveru <m.fellinger@gmail.com> * one todo gone, one added darcs-hash:20061020095528-24576-19e9b3176ab87640477aec162af3de28828516f6.gz [cbf9978 | Fri Oct 20 07:51:00 UTC 2006] manveru <m.fellinger@gmail.com> * an ultimate patch... this addes lots of documentation, rewrite of the Response to be Struct instead of OpenStruct (17 times faster) and also some minor tweaks all over the place, notable also the change of the logger-format darcs-hash:20061020095140-24576-69b4c6abb17aeb5834037e76c21183028286b5b4.gz [f2bcc96 | Fri Oct 20 07:50:00 UTC 2006] manveru <m.fellinger@gmail.com> * minor updates to the testcases, somehow i should fix the tc_params on the errors... but that takes a bit more time, otherwise just removed the sleeps that are now handled by ramaze darcs-hash:20061020095038-24576-8fbf7031f18371411a151f078b8ab9472b03ac09.gz [38c6045 | Fri Oct 20 07:48:00 UTC 2006] manveru <m.fellinger@gmail.com> * small fixes to the simple example darcs-hash:20061020094835-24576-c98db6dad7da219d902ea6ccb978187de945bbd1.gz [093a659 | Fri Oct 20 03:53:00 UTC 2006] manveru <m.fellinger@gmail.com> * added new rake task, todo - it scrapes the source for TODO markers and prints them out. darcs-hash:20061020055355-24576-a59971a947da75ded66d4c1eb7027973a5514aa8.gz [815f03c | Thu Oct 19 23:50:00 UTC 2006] manveru <m.fellinger@gmail.com> * added documentation and Gestalt.build, which takes a block instead of Gestalt.new darcs-hash:20061020015034-24576-94c04d6bc74188e46080fdaac9ce8ebb5a5a9c44.gz [abd5d1b | Fri Oct 20 05:49:00 UTC 2006] manveru <m.fellinger@gmail.com> * cleaned up the tests a bit and updated the test-runner to show some summary darcs-hash:20061020074936-24576-34047b2902f87ca6caef2947c6527622ea07371a.gz [ac1308a | Thu Oct 19 08:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * loooooots of documentation (which is not displayed on rdoc due to some very weird behaviour darcs-hash:20061019101812-24576-abaa8c913f6745c6b5e226dedfb9909c1cd4ab28.gz [1a76b53 | Thu Oct 19 08:16:00 UTC 2006] manveru <m.fellinger@gmail.com> * a new and simple way to react on signals, default is SIGINT, it executes Ramaze.shutdown which in turn kills the adapter, to change the signal listened on change Global.shutdown_trap darcs-hash:20061019101649-24576-064c9ac034d74e7403f4e52476596be1858f4214.gz [0a0804d | Thu Oct 19 08:14:00 UTC 2006] manveru <m.fellinger@gmail.com> * very minor cleanup of some methods... darcs-hash:20061019101454-24576-89917752c0248201f94e838e6308a9eec7170697.gz [02cd0a5 | Thu Oct 19 08:14:00 UTC 2006] manveru <m.fellinger@gmail.com> * added an rdoc-task to the Rakefile darcs-hash:20061019101440-24576-52192a721f48f7eb5cc3b03faa5502acab15d4d9.gz [28e1cfb | Thu Oct 19 08:14:00 UTC 2006] manveru <m.fellinger@gmail.com> * moved README and CHANGELOG to the new /doc dir darcs-hash:20061019101418-24576-34aa15dc0f39b04bfc84abc3684f56a2fb2f73fa.gz [f6e7ace | Thu Oct 19 08:13:00 UTC 2006] manveru <m.fellinger@gmail.com> * tidy takes now an hash of options and i added extensive documentation ... could use some more though (removed require for rubygems) darcs-hash:20061019101326-24576-2988f9eedd67f97ecb633d4fa3cbb538878379b4.gz [a5269db | Wed Oct 18 08:27:00 UTC 2006] manveru <m.fellinger@gmail.com> * lots of smaller changes, extracted tidy from the mongrel-adapter to a new dir named tool - where most helper-stuff should go to. darcs-hash:20061018102723-24576-77f1be9584c827b6d426da3028eb61098b74e58a.gz [6f95202 | Wed Oct 18 08:27:00 UTC 2006] manveru <m.fellinger@gmail.com> * updates to global.rb - stuff that doesn't make sense for a singleton darcs-hash:20061018102704-24576-6e88db4ad07478c9ab15109baa7c6f3ea627b1c7.gz [390a6d9 | Wed Oct 18 08:25:00 UTC 2006] manveru <m.fellinger@gmail.com> * revised most testcases and added tc_global and tc_tidy darcs-hash:20061018102531-24576-7ead1a10b878da74432ee9a486f70e4913e1bf50.gz [97fd209 | Wed Oct 18 08:25:00 UTC 2006] manveru <m.fellinger@gmail.com> * added rcov-task darcs-hash:20061018102516-24576-3fb27188123aa715a5b9416514236baa6abf5b31.gz [cb45062 | Wed Oct 18 05:36:00 UTC 2006] manveru <m.fellinger@gmail.com> * use String#/ instead of File.join darcs-hash:20061018073637-24576-ca7abb0c33836ec0e1b0b0be0e7e5bffd56957f1.gz [bf3ab38 | Wed Oct 18 05:35:00 UTC 2006] manveru <m.fellinger@gmail.com> * much better handling of restarts and stuff by joining still running mongrel-threads darcs-hash:20061018073504-24576-593fec2a45a643754add93819605e2eaf400ce87.gz [4fbecaa | Wed Oct 18 05:34:00 UTC 2006] manveru <m.fellinger@gmail.com> * remove the gostruct.rb darcs-hash:20061018073441-24576-96875beb2e109b6ac60e6d4e217ca619c896a47b.gz [22c9040 | Wed Oct 18 05:34:00 UTC 2006] manveru <m.fellinger@gmail.com> * update to README darcs-hash:20061018073408-24576-d45bbc27597d52c50b800fd9f793a2491689147d.gz [22d4465 | Wed Oct 18 05:33:00 UTC 2006] manveru <m.fellinger@gmail.com> * removing the global openstruct and just use Global... darcs-hash:20061018073323-24576-7d163911c6978c8e823578e1ef0eddbc55fcb2e7.gz [1d9ab7c | Wed Oct 18 04:34:00 UTC 2006] manveru <m.fellinger@gmail.com> * removing the default-adapter because it's useless and not used darcs-hash:20061018063448-24576-6f8ce35c41a8b98fd2b962676eceaed00ad2de29.gz [6796ca9 | Wed Oct 18 02:57:00 UTC 2006] manveru <m.fellinger@gmail.com> * removed a bit of debugging-info from tc_session darcs-hash:20061018045750-24576-29989025604cb34ad7d345676b846134fd7ace8d.gz [e5d3f78 | Wed Oct 18 02:55:00 UTC 2006] manveru <m.fellinger@gmail.com> * this drives in the last nail to support sessions, also speeds up requests a tiny weeny bit ;) darcs-hash:20061018045514-24576-22aea5163f4812b2d9a47c376e0a2c411411a5d8.gz [3e2552a | Wed Oct 18 02:54:00 UTC 2006] manveru <m.fellinger@gmail.com> * controller now accesses the Thread#[] to get request/session darcs-hash:20061018045404-24576-a89e5116c705ccc4f2db902adf84284d3a76ba59.gz [87f23ec | Wed Oct 18 02:53:00 UTC 2006] manveru <m.fellinger@gmail.com> * split up the response in mongrel into set_out and set_head darcs-hash:20061018045323-24576-2151f9a8def074019f5e1e22bc76eab15cfe9501.gz [7b1f23f | Wed Oct 18 02:53:00 UTC 2006] manveru <m.fellinger@gmail.com> * added ramaze/session darcs-hash:20061018045311-24576-c8f10e542ee9725de8d88265e6d76f82338b0e4a.gz [3fac6b9 | Wed Oct 18 02:52:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a session-testcase darcs-hash:20061018045241-24576-db782614deab5143c65a57540ce1075d33d1cd9a.gz [45c10ab | Mon Oct 16 22:52:00 UTC 2006] manveru <m.fellinger@gmail.com> * updated CHANGELOG darcs-hash:20061017005207-24576-619b3ed216e129e6784e0df75b71a2e5258bf84b.gz [56ada3b | Mon Oct 16 22:50:00 UTC 2006] manveru <m.fellinger@gmail.com> * tagged 0.0.2 - next version will support sessions (hopefully :) darcs-hash:20061017005051-24576-34cc5a6bc2140d5ccc509d8049df518143e68e5b.gz [ecbc80a | Mon Oct 16 22:50:00 UTC 2006] manveru <m.fellinger@gmail.com> * updated the readmy and rakefile-description a bit darcs-hash:20061017005036-24576-a1c6ac15dc88e79feec5fdf66fbe45d73d61a8c6.gz [6db93af | Mon Oct 16 22:50:00 UTC 2006] manveru <m.fellinger@gmail.com> * added Ramaze::VERSION darcs-hash:20061017005013-24576-8a57d631b20d349496d0085dee61efb68bfc3ac3.gz [2115e33 | Mon Oct 16 22:47:00 UTC 2006] manveru <m.fellinger@gmail.com> * added a SIGINT-trap to cleanly shutdown darcs-hash:20061017004700-24576-0094275284029d933bd51b3000624c2969c7222b.gz [3119d3d | Mon Oct 16 22:29:00 UTC 2006] manveru <m.fellinger@gmail.com> * added test/tc_request [passes] darcs-hash:20061017002931-24576-44a09aed17080c434293b50f8cffd1c1ac9dc61b.gz [ccfedde | Mon Oct 16 22:29:00 UTC 2006] manveru <m.fellinger@gmail.com> * further improvment to the testcase-runner and setting default Global.error_page to true darcs-hash:20061017002900-24576-6f69e5ccb72e9617a2a94e5ef1a56803163ac8c7.gz [939df45 | Mon Oct 16 09:18:00 UTC 2006] manveru <m.fellinger@gmail.com> * and everything passes now... darcs-hash:20061016111833-24576-7beda7981ee79b690eead9606ad9c5e2bc25d49a.gz [04d0cf2 | Mon Oct 16 06:52:00 UTC 2006] manveru <m.fellinger@gmail.com> * patching the test-runner to shut down ramaze before it is run again from the next testcase... darcs-hash:20061016085259-24576-11419575110cc2c9c93a36d0c7c65a98ca43aef8.gz [129825b | Mon Oct 16 06:48:00 UTC 2006] manveru <m.fellinger@gmail.com> * huuuuge patch, perfect error-handling, better automagic controller-mapping, superb tidy-functionlity, even the params-testcase passes again :P - to turn on tidy, set Global.tidy to true darcs-hash:20061016084809-24576-9fd4522b04e9ea4a4714d9e4788984ff8ff97c8c.gz [1b1593e | Mon Oct 16 00:39:00 UTC 2006] manveru <m.fellinger@gmail.com> * added snippets for String#/ darcs-hash:20061016023942-24576-ffc5de652400ec8a87573427a01e22dad09ef84c.gz [0fcb0c0 | Mon Oct 16 00:38:00 UTC 2006] manveru <m.fellinger@gmail.com> * added caller_lines in the snippets darcs-hash:20061016023847-24576-8a1e324f1ebaf574fb0552c903e9ec945e50999a.gz [02845da | Sun Oct 15 23:08:00 UTC 2006] manveru <m.fellinger@gmail.com> * a new snapshot with some more tests and lots of bugs fixed... also working now on the pluggable templating again. darcs-hash:20061016010851-24576-4d900262c21ad9f98a960b847da2ba17401546de.gz [58cfcbc | Sun Oct 15 02:53:00 UTC 2006] manveru <m.fellinger@gmail.com> * this fixes a bug that lead to problems if you don't define a mapping darcs-hash:20061015045332-24576-958fb23e713aa01be23e2c96e98bf69dde2aa3c6.gz [482e393 | Sun Oct 15 02:52:00 UTC 2006] manveru <m.fellinger@gmail.com> * this introduces a new Global.running_adapter, for later easy access outside of Ramaze - should add some methods to check if the adapter is running and the like darcs-hash:20061015045219-24576-3ac2d9f1e510309318a6734a7573b1064fdcdd3e.gz [d63ea81 | Sun Oct 15 02:51:00 UTC 2006] manveru <m.fellinger@gmail.com> * by default, require 'pp', i think it's far too useful not to be available all the time darcs-hash:20061015045146-24576-8fb2017d887ceeace4830cfa9d6ac0ae18dcc0b5.gz [79b430a | Sun Oct 15 02:50:00 UTC 2006] manveru <m.fellinger@gmail.com> * some more info in the CHANGELOG, this will only be updated in releases from now on, the information comes from darcs anyway darcs-hash:20061015045047-24576-980739fa2284a6cad04b4f334c3f40e686fc0bf2.gz [761b342 | Sun Oct 15 02:49:00 UTC 2006] manveru <m.fellinger@gmail.com> * changed hello.rb to fit in with the use of the ramaze-binary darcs-hash:20061015044910-24576-dbd3921ba8f813803fc20747e6e00ba34824eacd.gz [cc0f844 | Sun Oct 15 02:48:00 UTC 2006] manveru <m.fellinger@gmail.com> * updated the Rakefile to prodcue some more useful stuff :) - also knows about the executable 'ramaze' now darcs-hash:20061015044830-24576-7518c69d0c2004cfcc1334c4f6d4c68a196e7d82.gz [45b69dd | Sun Oct 15 02:47:00 UTC 2006] manveru <m.fellinger@gmail.com> * updated the README a bit, more to come darcs-hash:20061015044720-24576-dfce66187761c324c7030206d4ed85eec3669d95.gz [5082b3a | Sun Oct 15 02:44:00 UTC 2006] manveru <m.fellinger@gmail.com> * added an ramaze executable it can be found in bin/ramaze and you use it like that: $ cd example $ ls main.rb $ ramaze which will in turn run the main.rb you can give ramaze a parameter for the run-file, more sophisticated parameters are not included (yet) darcs-hash:20061015044454-24576-aa5cb8a03956388df81a6ce391b4c2958322dcc5.gz [cd8299c | Fri Oct 13 17:22:00 UTC 2006] manveru <m.fellinger@gmail.com> * initialize darcs-hash:20061013192249-24576-fd3038740faf09e21c38c79749f9d5b3978b4be1.gz ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/guide/_static/��������������������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�016151� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/guide/_static/logo.png������������������������������������������������������������0000644�0000041�0000041�00000016413�12140566653�017624� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��,��,���y}u���tEXtSoftware�Adobe ImageReadyqe<��IDATx[lyKZDQdYd[ǵZN\T- i@2 ?Mїj L dٱ:Z%IDRdYdQ/rw9˽_|0]u3gΜ�������������������������������������������������������������������������������������������������������������������(thHZ5ZkC}9j[B1hq@X<yr_d^+$$OHTyDU#lAmSF;:l I a9QT%2yɑ(HJ-/Z6\N@(<TZ ArX = 2b.}^$ȍ8"JjтG/ȼHҷG\�e$�HXEH\TUNk\UUnȃHeu[.S9:zy)4�%̣JsyO-M9AS�Q a塬s=5J=Q-BXFZF:NWh e\ ( FZ8ZCbAeL ;uatAZezw"zkMY6e@"B~-MVeYx؛u=O3 ,dB:ٞ�YBX BX  +gzI y@XYJK�BX.+=^-)c<+Ӳ2{m u!iu+Si H< iO V+0 H "+=LG[Vu+Pd Iz)a0[(dzalV o\ШN#4JDVd3d=>Ԑ0Z7! ",d]At?!)aLZ EDX1+B^H#:%N~UX׬i#z{`Pgg??כiUΝf}g bBq:,{⪞MJ^zhpŇrAz֮ o@Xea&%,) 3l^kloe^Tg6lX] k7^+oI:KKly|jJ(~% 33b|D owt)֩OKJ5? ݩsbU7vkMJZVa-ΖEjQuw[_oOvnnP>;u8<s*o;6&L[=)amGXDWEhP;md8T;FqG=Kש~rr*?f( a-(v++=3UK^1:\[8p4M:hzO ]ҢzӦd-,%3 _^\$P1;r5?wjތ9UYInrr^\P_:Q/ElT'tDI?[LL4[n+ ZTո|ۮ!iWݲE~r}ԩeqY-8toP:7kdD`QEE˔ñdoԔ<#<m:eB4(if:e%r\lR⭩Y^oV{z~][J_/uw<AT:me,TzaCVzr>y\[veikl ٴ55[%֣}}rh_::cGҿXl17?Eubɕid˗7eh7<PRIQΨ3YnqLNXGXFe'5pAcQe˳Ng9##7yQeN`[a^lײN033b/_"*ʔ0}/uxE)a;%Ҳjl$-zTzUw쬨3Vd??oezno⾝wϖDj$Y^:"-#ݲ]eڗ\W:e~L~yY=gKYYަMK/\&!ƴ/#:{i;4XR"WW'EEEſ~jֲWmcm>&j/;wʷ|2_eed&ZDvKKrH纻y5Tݼk=9)_oZ$-];hQW!#uj)]JdKt{]%Ru?.v.Yi߿ a-k' U'\>';;nչTz9N=$裉QEFXicR*GKKJVdn?zkd[Nup߾dBXV5,Ӟt=1ˤ[t+zy=*)-2&56n6d{\9Txu~u*CdeT?GX`eydW'@*{wVUrsŁ0[|OO_a(ujǥpYcSjƾ6 =SoDtU[(@[PP}"lp[",`U']jI彀vÝJZ&߇K55KyES52(542-$*0Y'&ڈRGia=�UU2"U6=Mt(+",% 4�HUTC>gbH~ϰ( a*A#^~>XTԊjG6Ä޿i.VhBGWK:e`M Š\�©!QB߁~űW;(F~_v#, ^Æ7 ,"߱7by07p ˔:‚ee,*{ΞEX0xlwjX\irMM,^9* aq 趙CIk̅aA*)kt0N";p[@5B`[NNrh",D^C3IiiV@Xlt_y%K %$A )azՏ,j{:@JHi/T%*0L+_$+hMQn79J,tlV.(ݻYjkE:L:6m3'3334‚D#DX<`AXJU<;2l$ ;=wja\ aePodla[;2FE�h%3Aő $ QJԉ˅]Ewe2aj1-$�*ZR%. *-u5+pRtGX9KzHJ866fnQtGXӳX[)+}=f֭[+C",RB4dbBGeiO]P35t"$4T׮-v:L>hjjp8I0TuwG5rɩ}(+ r-M%DX+iaՍƚMꔕ5e5nA",`ޥ{ |~8)EX+it>&h't92 w|\+0/V38x:zjI|;Ϻ\>Svg\v _*.KU26֊~C\]~8>hq iEE={ٹsAk~8bݕ+RfIaFꚻ{*ZgyfDW###&EWDN?uO[kY[o%5':m]fx92i|&pki3eGnO>YPU|1R /Fr7e^e9wNJ-.۴#0_<Oaq@SE?`Ij8qc۹ -|{߫r\mTqAFXMT#F֯ ̣0zKJJ6~l3u#,#B/\*K0aCGJk-..na {@XC;UsԒzZn</RFL ~)UPiagmo;hl)-aÆw=ҥKtQVϯҺhiرc/s5GJ x9m+ \"[}wk6u~M7߬Rղ ﻖ`YiaڬU<6֬ޑ[dpD `0({",¼[Z:)]C޽{5LV֟[gx<J.'lͅ%*EV&~}ߣm-oYiYJ@BZic+)]EWr=²iℬ[(Y5:}=?^֯~NSGU~y";DX Eh]wV{Lf˗^&'7;:~F~[ϰڢ԰X2;;;"-oRBXҷ첿s*Ejh{i[]奸z}*kVg6-dOe?a|vɺ:%,ҬQ*mtؑ<UnN3FUIv²qee;,)isnz"wygWh,^DlTeZ[_EX6"pdT;9)#hsLLx7=U'mWw=:T۬u$U8HJGTZ`Ҫ7yfQEP55S] TtڕK\W:KdZLzөziP҃<ZT:#-+Ee;e|N uر_n#7yDTU6_Ҳe ae%ԦM2mL*r! .9oB]Q4"%]]|䣢-.KEaG3}UjLZ:js?DX7CNLkDǡ=")N)PfMCik*bKHLde˷ȩ|}lEhK+=<ȑ@X,hJ-y ]( x,?�9ʹ>Š'@dB;JLZBJKO}|GXHjYORH <Mi "CZ f "t$1ѐWYAԐzdJZP6iIӚh Ȁ<ԭV&Y<*锖.wЂ+SZi HZyaeCZzZ𐊴:1QDZtiV6sHKˊ";BZ!+kiu -CZcBZر s!d5^~dZZd.^JVԬVK+|i/J/0 .HKϥD؆V%*FaB4 BX&KO|Zh e4:Eex6(Y1qiuP2%i",k5"t ؈ĥ'nk^ZhSRBIKJD7QU3u",%#"ΉPOBQ"2?űl\pOD./U4ena5:V - AFX?w?H"9O_{zwd]HPs\ "5m!E[bm=hr*ձS"&;;|=zM}ud؆Vbr8Gr[Ud-2|KJ\wu3Coo{ʏN8q=$ww )3RgqəR[,E~g+5}ݑ~?q??~J>̐qlﶗV,8c, /e$ңֿD-rpo>}'$$ep9ڿ iu:%*dGϊ"{l_+Rb3===<rϝ;:+(D϶~7 OT$ee];3 DLߟT}Re_u"(rߊرP$ W'O<ꫯvXN)H$sX6^\ˑx%L Йo ">\'^'DjE*g~_t\t:KbH ڹ:,@dzX*یNMJ㙊戱VOeC:ȘZΨ皔"*lpg9soIGGGE.H$c ql['SVdjeJ $mrГwV&1֫m@"7ҫ;ߨK(RYԔ|ƍA%O^=}t"upm܏WXWHeXѮz#FʑVԟT n_Ya$rK! … =~aɓ'UT5xԪIWa#rYdNaI1$wVKC?(R"E*XYBQ:uѮ+W wtpppJ3N* Kw{ cb=cΒR2 NGүOz]QZ~"mԉNz%{T$V~DV^0 -MNNN)\xdddv-Kb=ItXii{L D>ʓV`}ZWT4V}WpT^jIggJWQUdTGwۖ"{QIyP:u49$hbZsZ QO9*XD"lˍ VJ" ɑRU*})%xElThʨ̊dyR);jʤ;+hlNRO52H a$zR*rr)t(~HIc+ި,jI6zGN*~LB\H,]QXdX+T%UJі$������������������������������������������������������������������������������������������������������������������������� �X)9bv����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/guide/_static/logo.svg������������������������������������������������������������0000644�0000041�0000041�00000011166�12140566653�017637� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="svg2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" sodipodi:docname="ramaze_circle_logo.svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" inkscape:version="0.48.1 r9760" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="300px" height="300px" viewBox="-64.75 -65.013 300 300" enable-background="new -64.75 -65.013 300 300" xml:space="preserve"> <sodipodi:namedview id="base" fit-margin-bottom="0" fit-margin-right="0" fit-margin-left="0" fit-margin-top="0" inkscape:window-y="19" inkscape:window-x="0" showgrid="false" inkscape:current-layer="layer1" inkscape:document-units="px" inkscape:cy="304.76131" inkscape:pageopacity="0.0" borderopacity="1.0" bordercolor="#666666" pagecolor="#ffffff" inkscape:cx="174.2785" inkscape:zoom="0.35355339" inkscape:window-height="747" inkscape:pageshadow="2" inkscape:window-width="1364" inkscape:window-maximized="0"> </sodipodi:namedview> <g id="layer1" transform="translate(-48.0832, -566.213)" inkscape:groupmode="layer" inkscape:label="Layer 1"> <g id="g3090" transform="matrix(0.382148, 0, 0, 0.382148, 29.7083, 471.954)"> <path id="path2985-0-2-9" inkscape:connector-curvature="0" fill="#4D4D4D" d="M478.606,340.975L377.809,399.19 c9.905,17.125,15.573,37.008,15.573,58.215c0,32.151-13.043,61.245-34.115,82.315l82.347,82.344 C516.135,547.542,531.305,432.248,478.606,340.975z"/> <radialGradient id="path4022_1_" cx="1471.6052" cy="-11840.3555" r="258.7954" gradientTransform="matrix(0.3821 0 0 -0.0439 -299.9709 175.6774)" gradientUnits="userSpaceOnUse"> <stop offset="0" style="stop-color:#000000"/> <stop offset="1" style="stop-color:#000000;stop-opacity:0"/> </radialGradient> <path id="path4022" sodipodi:type="arc" sodipodi:cx="148.49242" sodipodi:cy="779.41895" sodipodi:rx="258.80109" sodipodi:ry="29.698484" fill="url(#path4022_1_)" d=" M521.2,694.912c0,16.404-115.87,29.697-258.801,29.697S3.598,711.316,3.598,694.912c0-16.403,115.87-29.697,258.801-29.697 S521.2,678.509,521.2,694.912z"/> <path id="path2985-0-1" inkscape:connector-curvature="0" fill="#B3B3B3" d="M359.266,539.719 c-21.067,21.07-50.164,34.113-82.314,34.113v116.429c61.758,0,120.988-24.53,164.661-68.197L359.266,539.719z"/> <path id="path2985-3" inkscape:connector-curvature="0" fill="#FF0000" d="M276.952,224.547 c-128.603,0-232.857,104.254-232.857,232.857c0,128.602,104.254,232.857,232.857,232.857V573.832 c-64.302,0-116.429-52.126-116.429-116.428s52.128-116.429,116.429-116.429c43.095,0,80.724,23.413,100.856,58.215l100.797-58.215 C437.011,268.929,360.145,224.547,276.952,224.547z"/> <linearGradient id="path2985-2-4_1_" gradientUnits="userSpaceOnUse" x1="1924.123" y1="-878.1219" x2="1924.123" y2="-1276.0308" gradientTransform="matrix(0.3821 0 0 -0.3821 -458.3633 -76.8066)"> <stop offset="0" style="stop-color:#000000;stop-opacity:0.4902"/> <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.4902"/> </linearGradient> <path id="path2985-2-4" inkscape:connector-curvature="0" fill="url(#path2985-2-4_1_)" d="M276.95,258.097 c-110.061,0-199.305,89.244-199.305,199.306c0,110.064,89.244,199.277,199.305,199.277c110.063,0,199.28-89.214,199.28-199.277 C476.229,347.341,387.013,258.097,276.95,258.097z M276.95,340.764c64.418,0,116.641,52.221,116.641,116.639 S341.368,574.042,276.95,574.042c-64.417,0-116.637-52.221-116.637-116.639S212.533,340.764,276.95,340.764z"/> <path id="path2985-0-2" inkscape:connector-curvature="0" fill="#4D4D4D" d="M493.453,332.404l-108.219,62.5 c10.633,18.385,16.718,39.732,16.718,62.5c0,34.518-14.004,65.753-36.625,88.374l88.406,88.409 C533.743,554.176,550.029,430.397,493.453,332.404z"/> <path id="path2985" inkscape:connector-curvature="0" fill="#FF0000" d="M276.952,207.404c-138.071,0-250,111.929-250,250 c0,138.073,111.929,250.002,250,250.002V582.403c-69.036,0-125-55.964-125-124.999c0-69.036,55.964-125,125-125 c46.266,0,86.668,25.137,108.282,62.5l108.219-62.5C448.794,255.054,366.268,207.404,276.952,207.404z"/> <path id="path2985-0" inkscape:connector-curvature="0" fill="#B3B3B3" d="M365.328,545.778 c-22.621,22.621-53.859,36.625-88.375,36.625v125.003c66.304,0,129.896-26.337,176.781-73.219L365.328,545.778z"/> </g> </g> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/guide/AUTHORS���������������������������������������������������������������������0000644�0000041�0000041�00000005733�12140566653�015603� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Following persons have contributed to ramaze. (Sorted by number of submitted patches, then alphabetically) 2740 Michael Fellinger <m.fellinger@gmail.com> 238 Yorick Peterse <yorickpeterse@gmail.com> 216 Aman Gupta <aman@ramaze.net> 89 Jonathan Buch <jonathan.buch@gmail.com> 77 Pistos <gitsomegrace.5.pistos@geoshell.com> 69 Clive Crous <clive@crous.co.za> 27 Keita Yamaguchi <keita.yamaguchi@gmail.com> 20 injekt <injekt.me@gmail.com> 20 Ryan Grove <ryan@wonko.com> 18 Lars Olsson <lasso@lassoweb.se> 16 Lee Jarvis <injekt.me@gmail.com> 16 TJ Vanderpoel <bougy.man@gmail.com> 11 Wang, Jinjing <nfjinjing@gmail.com> 10 Lee Jarvis <lee@jarvis.co> 8 Mario Gutierrez <mgutz@mgutz-mbp.local> 8 Michel Blanc <mb@mbnet.fr> 7 Tadahiko Uehara <kikofx@gmail.com> 6 Aki Reijonen <aki.reijonen@gmail.com> 6 Antti Tuomi <antti.tuomi@tkk.fi> 6 Sam Carr <samcarr@gmail.com> 5 Dmitry Gorbik <socket.h@gmail.com> 5 mwlang <mwlang@cybrains.net> 4 Andreas Karlsson <andreas@proxel.se> 4 Diego Viola <diego.viola@gmail.com> 4 James Tucker <jftucker@gmail.com> 4 John Pagonis <john@pagonis.org> 4 Masahiro Nakagawa <repeatedly@gmail.com> 4 mig <mig@mypeplum.com> 3 Chris Duncan <celldee@gmail.com> 3 Claudemiro <dimiro1@gmail.com> 3 Clinton R. Nixon <clinton.nixon@viget.com> 3 Riku Raisaenen <riku@helloit.fi> 3 starapor <me@sarahtaraporewalla.com> 3 Stas SUȘCOV <stas@net.utcluj.ro> 2 Andrew Farmer <xichekolas@gmail.com> 2 jShaf <joshua.shaffner@gmail.com> 2 Yutaka HARA <yutaka.hara+github@gmail.com> 1 Aaron Mueller <mail@aaron-mueller.de> 1 Ara T. Howard <ara.t.howard@gmail.com> 1 Arnaud Meuret <arnaud@meuret.name> 1 Bruno Rohée <bruno@rohee.com> 1 Carlo Zottmann <carlo@zottmann.org> 1 Cheah Chu Yeow <chuyeow@gmail.com> 1 Christian Neukirchen <chneukirchen@gmail.com> 1 Colin Shea <colin@centuar.(none)> 1 crab <crabtw@gmail.com> 1 Dmitry Gorbik <dmitrygorbik@isengard.local> 1 Esad Hajdarevic <esad@esse.at> 1 Fabian Buch <fabian.buch@fabian-buch.de> 1 Francesc Esplugas <francesc.esplugas@gmail.com> 1 Gavin Kistner <gavin@phrogz.net> 1 huma <huma@boxbot.org> 1 Isak Andersson <IcePapih@lavabit.com> 1 Jason Torres <jason.e.torres@gmail.com> 1 Jean-Francois Chevrette <jfchevrette@iweb.ca> 1 Jeremy Evans <code@jeremyevans.net> 1 kez <kdobson@gmail.com> 1 leucos <leucos@michel.erasme.lan> 1 Marc Weber <marco-oweber@gmx.de> 1 Martin Hilbig <blueonyx@dev-area.net> 1 Matt Rubens <mrubens@goldencookie.localdomain> 1 Pistos <github.pistos@purepistos.net> 1 Rob Lievaart <rob@rebeltechnologies.nl> 1 sean <sean@sean-t61p.(none)> 1 Thomas Leitner <thomas.leitner@gmail.com> 1 Victor Luft <victor.luft@ptomato.net> 1 Vincent Roy <VincentRoy8@gmail.com> 1 Yasushi Abe <yasushi.abe@gmail.com> 1 Zoxc <zoxc32@gmail.com> �������������������������������������ramaze-2012.12.08/.gitignore������������������������������������������������������������������������0000644�0000041�0000041�00000000147�12140566653�015420� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkg .yardoc doc ydoc *~ *.swp .redcar *.rbc database.db .rbx .idea/* *.iml .rbenv-version Gemfile.lock �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/������������������������������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�014174� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/vendor/�����������������������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�015471� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/vendor/route_exceptions.rb����������������������������������������������������0000644�0000041�0000041�00000001567�12140566653�021426� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������module Rack class RouteExceptions ROUTES = [] PATH_INFO = 'rack.route_exceptions.path_info'.freeze EXCEPTION = 'rack.route_exceptions.exception'.freeze class << self def route(exception, to) ROUTES.delete_if{|k,v| k == exception } ROUTES << [exception, to] end alias []= route end def initialize(app) @app = app end def call(env, try_again = true) @app.call(env) rescue Exception => exception raise(exception) unless try_again ROUTES.each do |klass, to| next unless klass === exception return route(to, env, exception) end raise(exception) end def route(to, env, exception) env.merge!( PATH_INFO => env['PATH_INFO'], EXCEPTION => exception, 'PATH_INFO' => to) call(env, try_again = false) end end end �����������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/������������������������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�015337� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/README.md���������������������������������������������������������������0000644�0000041�0000041�00000002131�12140566653�016613� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Ramaze Application Welcome to your new Ramaze application. This README serves as a starting point for writing an application using the code you just generated. Once you've started working on your application you'll probably want to update this README so that its contents reflect your application's state and purpose. ## Requirements In order to run this application you'll need to have Ramaze 2.0.0 or newer and Rake. Optionally you can install Bundler and use it for Gem management, this can be done as following: $ gem install bundler $ bundle install ## Rake Tasks This application comes with a few predefined Rake tasks that make it easy to get started. You can list these tasks by running `rake -T` or `rake -D` (this shows longer descriptions for tasks if there are any). For example, to start a Ramaze console using Pry you'd run the following command: $ rake ramaze:pry ## Resources In case you need help you can refer to the following resources: * Ramaze website: <http://ramaze.net/> * Github repository: <https://github.com/ramaze/ramaze> * IRC channel: \#ramaze on Freenode ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/controller/�������������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�017522� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/controller/init.rb������������������������������������������������������0000644�0000041�0000041�00000001064�12140566653�021013� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Define a subclass of Ramaze::Controller holding your defaults for all controllers. Note # that these changes can be overwritten in sub controllers by simply calling the method # but with a different value. class Controller < Ramaze::Controller layout :default helper :xhtml engine :etanni end # Here you can require all your other controllers. Note that if you have multiple # controllers you might want to do something like the following: # # Dir.glob('controller/*.rb').each do |controller| # require(controller) # end # require __DIR__('main') ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/controller/main.rb������������������������������������������������������0000644�0000041�0000041�00000001441�12140566653�020773� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Default url mappings are: # # * a controller called Main is mapped on the root of the site: / # * a controller called Something is mapped on: /something # # If you want to override this, add a line like this inside the class: # # map '/otherurl' # # this will force the controller to be mounted on: /otherurl. class MainController < Controller # the index action is called automatically when no other action is specified def index @title = 'Welcome to Ramaze!' end # the string returned at the end of the function is used as the html body # if there is no template for the action. if there is a template, the string # is silently ignored def notemplate @title = 'Welcome to Ramaze!' return 'There is no \'notemplate.xhtml\' associated with this action.' end end �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/Rakefile����������������������������������������������������������������0000644�0000041�0000041�00000000116�12140566653�017002� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dir.glob(File.expand_path('../task/*.rake', __FILE__)) { |task| import task } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/spec/�������������������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�016271� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/spec/helper.rb����������������������������������������������������������0000644�0000041�0000041�00000002204�12140566653�020073� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������require File.expand_path('../../app', __FILE__) # This file can be used to set various configuration options for your testing # suite. Ramaze itself uses Bacon but you're not forced to use this. Want to # use Rspec instead? Go ahead! # # If you do happen to use Bacon you can uncomment the following lines to get # started with testing Ramaze using Bacon: # # require 'bacon' # require 'ramaze/spec/bacon' # The following code is an example on how to set up Capybara # (https://github.com/jnicklas/capybara) for Ramaze. If you don't use Capybara # you can safely remove these comments. # # require 'capybara/dsl' # # Capybara.configure do |config| # config.default_driver = :rack_test # config.app = Ramaze # end # # shared :capybara do # Ramaze.setup_dependencies # # extend Capybara::DSL # end # # The following few lines of code are the most basic settings you'll want to # use for testing Ramaze. They ensure that the environment is set correctly and # that your output isn't clogged with non important information. Ramaze.middleware :spec do run Ramaze.core end Ramaze::Log.level = Logger::ERROR Ramaze.options.mode = :spec ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/app.rb������������������������������������������������������������������0000644�0000041�0000041�00000000400�12140566653�016436� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# This file contains your application, it requires dependencies and necessary # parts of the application. require 'rubygems' require 'ramaze' # Make sure that Ramaze knows where you are Ramaze.options.roots = [__DIR__] require __DIR__('controller/init') ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/task/�������������������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�016301� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/task/ramaze.rake��������������������������������������������������������0000644�0000041�0000041�00000002573�12140566653�020433� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# This file contains a predefined set of Rake tasks that can be useful when # developing Ramaze applications. You're free to modify these tasks to your # liking, they will not be overwritten when updating Ramaze. namespace :ramaze do app = File.expand_path('../../app', __FILE__) desc 'Starts a Ramaze console using IRB' task :irb do require app require 'irb' require 'irb/completion' ARGV.clear IRB.start end # Pry can be installed using `gem install pry`. desc 'Starts a Ramaze console using Pry' task :pry do require app require 'pry' ARGV.clear Pry.start end # In case you want to use a different server or port you can freely modify # the options passed to `Ramaze.start()`. desc 'Starts Ramaze for development' task :start do require app Ramaze.start( :adapter => :webrick, :port => 7000, :file => __FILE__, :root => Ramaze.options.roots ) end desc 'Lists all the routes defined using Ramaze::Route' task :routes do require app if Ramaze::Route::ROUTES.empty? abort 'No routes have been defined using Ramaze::Route' end spacing = Ramaze::Route::ROUTES.map { |k, v| k.to_s } spacing = spacing.sort { |l, r| r.length <=> l.length }[0].length Ramaze::Route::ROUTES.each do |from, to| puts "%-#{spacing}s => %s" % [from, to] end end end �������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/public/�����������������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�016615� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/public/css/�������������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�017405� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/public/css/reset.css����������������������������������������������������0000644�0000041�0000041�00000004324�12140566653�021244� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@charset "UTF-8"; /** * http://meyerweb.com/eric/tools/css/reset/ * v2.0 | 20110126 * License: none (public domain) */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { border: 0; font-size: 100%; font: inherit; margin: 0; padding: 0; vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body { line-height: 1.3; } ol, ul, ol li, ul li { list-style-type: none; margin: 0px; padding: 0px; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { /** * Instead of "collapse" I'm using "separate" as that allows me to give table cells * a border without having to go through a lot of trouble */ border-collapse: separate; border-spacing: 0; width: 100%; } table th { font-weight: bold; } pre, code { font-size: 13px; font-family: monospace; } /** * These form elements usually don't trigger any special cursor and thus can confuse * users when these elements have custom styles (e.g. a background image). */ input[type="submit"], input[type="button"], input[type="checkbox"], input[type="radio"], button, select { cursor: pointer; } *[disabled], *[disabled="disabled"] { cursor: not-allowed; } textarea { overflow: auto; } acronym, abbr { cursor: help; } /* Some typography related styles */ body { font-size: 16px; } h1, h2, h3, h4, h5, h6 { font-weight: bold; } a:hover, a:active { outline: none; } strong { font-weight: bold; } small { font-size: 11px; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/public/css/text.css�����������������������������������������������������0000644�0000041�0000041�00000002144�12140566653�021104� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * Stylesheet used for styling headings, links, etc. * * @author Yorick Peterse * @link http://yorickpeterse.com/ */ body { background: url('../images/bg.png') repeat top left; border-top: 5px solid #444; color: #444; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, sans-serif; font-size: 14px; } p { font-size: 14px; line-height: 22px; margin-bottom: 20px; } a { color: #444; } ol { margin-left: 20px; } ol li { list-style-type: decimal; } ul { margin-left: 18px; } ul li { list-style-type: disc; } ul, ol { line-height: 22px; margin-bottom: 20px; } a:hover, h1 a:hover { color: #E33F1E; } h1, h2, h3, h4, h5, h6 { font-weight: bold; margin-bottom: 5px; } h1 { font-size: 28px; } h2 { font-size: 24px; } h3 { font-size: 22px; } h4 { font-size: 20px; } h5 { font-size: 18px; } h6 { font-size: 16px; } h1 a { color: #444; text-decoration: none; } pre { margin: 20px 0px; } code { background: #eee; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/public/css/grid.css�����������������������������������������������������0000644�0000041�0000041�00000002452�12140566653�021047� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@charset "UTF-8"; /** * Modified version of the CSS grid (aka 1140 CSS) that can be found at http://cssgrid.net * * This modified version has some extra enhancements to make it a bit easier to work with * the grid. Along with these minor fixes I also renamed all grid classes to the names * used by the 960 grid system as I find "grid_6" easier to write than "sixcol". */ .container { overflow: hidden; padding-left: 1%; padding-right: 1%; } .row { max-width: 96%; margin: 0 auto; overflow: hidden; width: 100%; } .grid_1, .grid_2, .grid_3, .grid_4, .grid_5, .grid_6, .grid_7, .grid_8, .grid_9, .grid_10, .grid_11 { float: left; margin-right: 3.8%; min-height: 1px; } .row .grid_1 { width: 4.85%; } .row .grid_2 { width: 13.45%; } .row .grid_3 { width: 22.05%; } .row .grid_4 { width: 30.75%; } .row .grid_5 { width: 39.45%; } .row .grid_6 { width: 48%; } .row .grid_7 { width: 56.75%; } .row .grid_8 { width: 65.4%; } .row .grid_9 { width: 74.05%; } .row .grid_10 { width: 82.7%; } .row .grid_11 { width: 91.35%; } .row .grid_12 { float: left; width: 100%; } .last, .row > *:last-child { margin-right: 0px; } img, object, embed { max-width: 100%; } img { height: auto; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/public/css/layout.css���������������������������������������������������0000644�0000041�0000041�00000003002�12140566653�021427� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * Stylesheet used for the layout of most elements. * * @author Yorick Peterse * @link http://yorickpeterse.com/ */ #container { margin: 20px auto; width: 940px; } #content { background: #fff; border: 1px solid #ddd; padding: 20px; width: 898px; } /* Top part of the website, contains the title and the navigation menu */ #top { background: #E33F1E; height: 70px; margin-bottom: 20px; padding: 0px 10px; } #top header h1 { color: #fff; font-size: 38px; margin: 10px 0px 0px 0px; padding: 0px; } #top nav ul { float: right; margin-right: 15px; } #top nav ul li { float: left; font-size: 16px; list-style-type: none; margin-right: 10px; } #top nav ul li:last-child { margin-right: 0px; } #top nav ul li a { color: #fff; display: block; height: 45px; padding: 25px 10px 0px 10px; text-decoration: none; } #top nav ul li a:hover { background: #D43919; } /* Footer at the bottom of the page */ #footer { text-align: center; } #footer p { font-size: 13px; margin-bottom: 10px; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/public/favicon.ico������������������������������������������������������0000644�0000041�0000041�00000002176�12140566653�020744� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �h�����(������ ���� ��������� �� ��������������������������������������������������������������������������������������������������ϳ������������������������������_������������������������������_����������ccc������������������������ ```MMMMMM?����������������..`````MMMMMMMMM����������������--o����������������llloOOOMMMMMMMMMMMM��������������������������������UUUMMMMMMMMMMMM?��?������������������������������RRRMMMMMMMMMMMM?����������--?����������������@@IIYMMMMMMMMMMMM�������������������� 00MMMMMM����������_�������� گ گ������99y��������������������������������������������������������������������������/������������������������������������������������������������������������������?��o����?������������������������������������2��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/public/images/����������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�020062� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/public/images/bg.png����������������������������������������������������0000644�0000041�0000041�00000000177�12140566653�021165� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������/nL���tEXtSoftware�Adobe ImageReadyqe<���PLTEa���IDATxb`d����'�����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/Gemfile�����������������������������������������������������������������0000644�0000041�0000041�00000000066�12140566653�016634� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������source :rubygems gem 'ramaze', '>= 2.0.0' gem 'rake' ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/config.ru���������������������������������������������������������������0000755�0000041�0000041�00000001275�12140566653�017164� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env rackup # # config.ru for ramaze apps # # Rackup is a useful tool for running Rack applications, which uses the # Rack::Builder DSL to configure middleware and build up applications easily. # # Rackup automatically figures out the environment it is run in, and runs your # application as FastCGI, CGI, or standalone with Mongrel or WEBrick -- all from # the same configuration. # # Do not set the adapter.handler in here, it will be ignored. # You can choose the adapter like `ramaze start -s mongrel` or set it in the # 'start.rb' and use `ruby start.rb` instead. require ::File.expand_path('../app', __FILE__) Ramaze.start(:root => Ramaze.options.roots, :started => true) run Ramaze �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/view/�������������������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�016311� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/view/index.xhtml��������������������������������������������������������0000644�0000041�0000041�00000002675�12140566653�020510� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<p> Congratulations, Ramaze is running fine and you can start working on your application. </p> <p> You can play around with this prototype by changing the following: </p> <ul> <li> <code>view/index.xhtml</code>: the content of this page. </li> <li> <code>layout/default.xhtml</code>: the layout for this page. </li> <li> <code>controller/main.rb</code>: the controller responsible for server this page. </li> </ul> <p> For more information, check out <a href="http://ramaze.net">ramaze.net</a> and <a href="http://ramaze.net/documentation/index.html">the documentation</a>. <br /> You can also read the <a href="http://doc.rubyists.com/ramaze%2binnate/">YARD documentation</a> or browse around the <a href="https://github.com/ramaze/ramaze">Ramaze source code</a>. </p> <p> For help with Ramaze, visit <a href="irc://chat.freenode.net/ramaze">#ramaze on irc.freenode.net</a>. <br /> You can use <a href="http://embed.mibbit.com/?server=irc.freenode.net&channel=%23ramaze,%23ruby-lang&forcePrompt=true">Mibbit</a>, an AJAX based IRC client or <a href="http://java.freenode.net/?channel=ramaze"> the official freenode irc java applet </a>. </p> <p> Feel free to post to the <a href="https://groups.google.com/forum/#!forum/ramaze">Ramaze Google Group</a>, your first mail has to go through moderation, so please be patient. </p> �������������������������������������������������������������������ramaze-2012.12.08/lib/proto/layout/�����������������������������������������������������������������0000755�0000041�0000041�00000000000�12140566653�016654� 5����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ramaze-2012.12.08/lib/proto/layout/default.xhtml����������������������������������������������������0000644�0000041�0000041�00000003550�12140566653�021361� 0����������������������������������������������������������������������������������������������������ustar �www-data������������������������www-data���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>#{@title} #{css('reset')} #{css('grid')} #{css('layout')} #{css('text')}

ramaze-2012.12.08/lib/ramaze/0000755000004100000410000000000012140566653015453 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/snippets.rb0000644000004100000410000000153212140566653017646 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'ramaze/snippets/blankslate' require 'ramaze/snippets/object/__dir__' require 'ramaze/snippets/ramaze/deprecated' require 'ramaze/snippets/ramaze/lru_hash' require 'ramaze/snippets/string/camel_case' require 'ramaze/snippets/string/color' require 'ramaze/snippets/string/esc' require 'ramaze/snippets/string/snake_case' require 'ramaze/snippets/string/unindent' Ramaze::CoreExtensions.constants.each do |const| ext = Ramaze::CoreExtensions.const_get(const) into = Module.const_get(const) collisions = ext.instance_methods & into.instance_methods if collisions.empty? into.__send__(:include, ext) else warn "Won't include %p with %p, %p exists" % [into, ext, collisions] end end ramaze-2012.12.08/lib/ramaze/version.rb0000644000004100000410000000005312140566653017463 0ustar www-datawww-datamodule Ramaze VERSION = '2012.12.08' end ramaze-2012.12.08/lib/ramaze/view.rb0000644000004100000410000000232512140566653016754 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze View = Innate::View # This is a container module for wrappers of templating engines and handles # lazy requiring of needed engines. module View # Combine Kernel#autoload and Innate::View::register def self.auto_register(name, *exts) autoload(name, "ramaze/view/#{name}".downcase) register("Innate::View::#{name}", *exts) end # Engines provided by Innate are: # ERB, Etanni, None auto_register :Erector, :erector auto_register :Erubis, :erubis, :rhtml auto_register :Ezamar, :zmr auto_register :Gestalt, :ges auto_register :Haml, :haml auto_register :Less, :lss, :less auto_register :Liquid, :liquid auto_register :Lokar, :lok auto_register :Nagoro, :nag auto_register :Remarkably, :rem auto_register :Sass, :sass auto_register :Slim, :slim auto_register :Tagz, :tagz auto_register :Tenjin, :rbhtml, :tenjin auto_register :Slippers, :st auto_register :Mustache, :mustache, :mt end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/default_middleware.rb0000644000004100000410000000075112140566653021624 0ustar www-datawww-dataRamaze.middleware(:dev) do use Rack::Lint use Rack::CommonLogger, Ramaze::Log use Rack::ShowExceptions use Rack::ShowStatus use Rack::RouteExceptions use Rack::ConditionalGet use Rack::ETag, 'public' use Rack::Head use Ramaze::Reloader run Ramaze.core end Ramaze.middleware(:live) do use Rack::CommonLogger, Ramaze::Log use Rack::RouteExceptions use Rack::ShowStatus use Rack::ConditionalGet use Rack::ETag, 'public' use Rack::Head run Ramaze.core end ramaze-2012.12.08/lib/ramaze/snippets/0000755000004100000410000000000012140566653017320 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/snippets/blankslate.rb0000644000004100000410000000027312140566653021767 0ustar www-datawww-dataunless defined?(BlankSlate) class BlankSlate < BasicObject; end if defined?(BasicObject) class BlankSlate instance_methods.each { |m| undef_method m unless m =~ /^__/ } end endramaze-2012.12.08/lib/ramaze/snippets/string/0000755000004100000410000000000012140566653020626 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/snippets/string/camel_case.rb0000644000004100000410000000077412140566653023237 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module CoreExtensions # Extensions for String module String ## # Simple transformation to CamelCase from snake_case # # @example # 'foo_bar'.camel_case # => 'FooBar' # def camel_case split('_').map{|e| e.capitalize}.join end end # String end # CoreExtensions end # Ramaze ramaze-2012.12.08/lib/ramaze/snippets/string/color.rb0000644000004100000410000000151312140566653022271 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module CoreExtensions # Extensions for String module String { :reset => 0, :bold => 1, :dark => 2, :underline => 4, :blink => 5, :negative => 7, :black => 30, :red => 31, :green => 32, :yellow => 33, :blue => 34, :magenta => 35, :cyan => 36, :white => 37, }.each do |key, value| define_method key do "\e[#{value}m" + self + "\e[0m" end end end # String end # CoreExtensions end # Ramaze ramaze-2012.12.08/lib/ramaze/snippets/string/snake_case.rb0000644000004100000410000000076412140566653023256 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module CoreExtensions # Extensions for String module String # convert to snake_case from CamelCase # # @example # 'FooBar'.snake_case # => 'foo_bar' # def snake_case gsub(/\B[A-Z][^A-Z]/, '_\&').downcase.gsub(' ', '_') end end # String end # CoreExtensions end # Ramaze ramaze-2012.12.08/lib/ramaze/snippets/string/esc.rb0000644000004100000410000000132012140566653021721 0ustar www-datawww-datarequire 'cgi' require 'uri' module Ramaze module CoreExtensions # Extensions for String module String # String#escape is an extensible escaping mechanism for string. currently # it suports # '
foo bar
'.esc(:html) # 'foo bar'.esc(:uri) # 'foo bar'.esc(:cgi) def escape which = :html case which when :html Rack::Utils.escape_html(self) when :cgi Rack::Utils.escape(self) when :uri ::URI.escape(self) else raise ArgumentError, "do not know how to escape '#{ which }'" end end alias_method 'esc', 'escape' end # String end # CoreExtensions end # Ramaze ramaze-2012.12.08/lib/ramaze/snippets/string/unindent.rb0000644000004100000410000000127312140566653023002 0ustar www-datawww-datamodule Ramaze module CoreExtensions # Extensions for String module String # Useful for writing indented String and unindent on demand, based on the # first line with indentation. def unindent find_indent = proc{ |l| l.find{|l| !l.strip.empty?}.to_s[/^(\s+)/, 1] } lines = self.split("\n") space = find_indent[lines] space = find_indent[lines.reverse] unless space strip.gsub(/^#{space}/, '') end alias ui unindent # Destructive variant of undindent, replacing the String def unindent! self.replace unindent end alias ui! unindent! end # String end # CoreExtensions end # Ramaze ramaze-2012.12.08/lib/ramaze/snippets/ramaze/0000755000004100000410000000000012140566653020577 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/snippets/ramaze/lru_hash.rb0000644000004100000410000001377312140566653022744 0ustar www-datawww-datamodule Ramaze # A Hash-alike LRU cache that provides fine-grained control over content # restrictions. # # It allows you to set: # * a maximum number of elements # * the maximum amount of memory used for all elements # * the allowed memory-size per element # * time to live # # Differences to the original implementation include: # * The Cache is now a Struct for speed # * Object memory size is obtained via Marshal::dump instead of #to_s # # Note that due to calculating object size with Marshal, you might have to do # some evaluation as to how large your values will be when marshaled, for # example a String will have String#size + 10. This differs from object to # object and between versions of Marshal, so be generous. # # Copyright (C) 2002 Yoshinori K. Okuji # Copyright (c) 2009 Michael Fellinger # # You may redistribute it and/or modify it under the same terms as Ruby. class LRUHash < Struct.new(:max_total, :max_value, :max_count, :expiration, :hook, :objs, :total_size, :list, :hits, :misses) CacheObject = Struct.new(:content, :size, :atime) VERSION = '0.3' # On 1.8 we raise IndexError, on 1.9 we raise KeyError KeyError = Module.const_defined?(:KeyError) ? KeyError : IndexError include Enumerable def initialize(options = {}, &hook) self.max_value = options[:max_value] self.max_total = options[:max_total] self.max_count = options[:max_count] self.expiration = options[:expiration] avoid_insane_options self.hook = hook self.objs = {} self.list = [] self.total_size = 0 self.hits = self.misses = 0 end def key?(key) objs.key?(key) end def value?(given_value) objs.each do |key, obj| return true if given_value == obj.content end false end def index(given_value) objs.each do |key, obj| return key if given_value == obj.content end nil end def keys objs.keys end def size objs.size end alias length size def to_hash objs.dup end def values objs.map{|key, obj| obj.content } end def delete(key) return unless objs.key?(key) obj = objs[key] hook.call(key, obj.content) if hook self.total_size -= obj.size objs.delete key list.delete_if{|list_key| key == list_key } obj.content end alias invalidate delete def clear objs.each{|key, obj| hook.call(key, obj) } if hook objs.clear list.clear self.total_size = 0 end alias invalidate_all clear def expire return unless expiration now = Time.now.to_i list.each_with_index do |key, index| break unless (objs[key].atime + expiration) <= now invalidate key end end def [](key) expire unless objs.key?(key) self.misses += 1 return end obj = objs[key] obj.atime = Time.now.to_i list.delete_if{|list_key| key == list_key } list << key self.hits += 1 obj.content end def []=(key, obj) expire invalidate key if key?(key) size = Marshal.dump(obj).size if max_value && max_value < max_total warn "%p isn't cached because it exceeds max_value %p" % [obj, max_value] return obj end if max_value.nil? && max_total && max_total < size warn "%p isn't cached because it exceeds max_total: %p" % [obj, max_total] return obj end invalidate list.first if max_count && max_count == list.size self.total_size += size if max_total invalidate list.first until total_size < max_total end objs[key] = CacheObject.new(obj, size, Time.now.to_i) list << key obj end def store(key, value) self[key] = value end def each_pair return enum_for(:each_pair) unless block_given? objs.each{|key, obj| yield key, obj.content } self end def each_key(&block) return enum_for(:each_key) unless block_given? objs.each_key{|key| yield key } self end def each_value return enum_for(:each_value) unless block_given? objs.each_value{|obj| yield obj.content } self end def empty? objs.empty? end # Note that this method diverges from the default behaviour of the Ruby Hash. # If the cache doesn't find content for the given key, it will store the # given default instead. Optionally it also takes a block, the return value # of the block is then stored and returned. # # @example # # lru = LRUHash.new # lru.fetch(:a) # => KeyError: key not found: :a # lru.fetch(:a, :b) # => :b # lru.fetch(:a) # => :b # lru.fetch(:c){|key| key.to_s } # => 'c' # lru.fetch(:c) # => 'c' def fetch(key, default = (p_default = true; nil)) if key?(key) value = self[key] elsif p_default.nil? value = self[key] = default elsif block_given? value = self[key] = yield(key) else raise KeyError, "key not found: %p" % [key] end value end def statistics {:size => total_size, :count => list.size, :hits => hits, :misses => misses} end private # Sanity checks. def avoid_insane_options if (max_value && max_total) && max_value > max_total raise ArgumentError, "max_value exceeds max_total (#{max_value} > #{max_total})" end if max_value && max_value <= 0 raise ArgumentError, "invalid max_value `#{max_value}'" end if max_total && max_total <= 0 raise ArgumentError, "invalid max_total `#{max_total}'" end if max_count && max_count <= 0 raise ArgumentError, "invalid max_count `#{max_count}'" end if expiration && expiration <= 0 raise ArgumentError, "invalid expiration `#{expiration}'" end end end # LRUHash end # Ramaze ramaze-2012.12.08/lib/ramaze/snippets/ramaze/deprecated.rb0000644000004100000410000000104112140566653023220 0ustar www-datawww-datamodule Ramaze DEPRECATED_CONSTANTS = { :BASEDIR => :ROOT, :Template => :View, :Optional => :Optioned, } def self.deprecated(from, to = nil) message = "%s is deprecated" message << ", use %s instead" unless to.nil? message << " - from: %p" Log.warn(message % [from, to, caller[1]]) end def self.const_missing(name) if to = DEPRECATED_CONSTANTS[name] Log.warn "Ramaze::#{name} is deprecated, use #{to} instead" constant(to) else super end end end # Ramaze ramaze-2012.12.08/lib/ramaze/snippets/object/0000755000004100000410000000000012140566653020566 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/snippets/object/__dir__.rb0000644000004100000410000000153312140566653022467 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module CoreExtensions # Extensions for Object module Object unless defined?(__DIR__) # This is similar to +__FILE__+ and +__LINE__+, and returns a String # representing the directory of the current file is. # Unlike +__FILE__+ the path returned is absolute. # # This method is convenience for the # File.expand_path(File.dirname(__FILE__)) # idiom. def __DIR__(*args) filename = caller[0][/^(.*):/, 1] dir = File.expand_path(File.dirname(filename)) ::File.expand_path(::File.join(dir, *args.map{|a| a.to_s})) end end end # Object end # CoreExtensions end # Ramaze ramaze-2012.12.08/lib/ramaze/controller/0000755000004100000410000000000012140566653017636 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/controller/default.rb0000644000004100000410000000104312140566653021605 0ustar www-datawww-datamodule Ramaze Log.debug "Default controller invoked" ## # The default controller that is loaded if no other controllers have been # defined. # # @author Michael Fellinger # @since 30-03-2009 # class DefaultController < Ramaze::Controller map '/' ## # Shows an ASCII lobster using Rack::Lobster::LobsterString. # # @author Michael Fellinger # @since 06-04-2009 # def lobster require 'rack/lobster' respond Rack::Lobster::LobsterString end end # DefaultController end # Ramaze ramaze-2012.12.08/lib/ramaze/request.rb0000644000004100000410000000765012140566653017500 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze ## # The purpose of this class is to act as a simple wrapper for Rack::Request # and provide some convinient methods for our own use. class Request < Innate::Request ## # you can access the original @request via this method_missing, # first it tries to match your method with any of the HTTP parameters # then, in case that fails, it will relay to @request def method_missing meth, *args key = meth.to_s.upcase return env[key] if env.has_key?(key) super end ## # Sets any arguments passed as @instance_variables for the current action. # # Usage: # # request.params # => {'name' => 'manveru', 'q' => 'google', 'lang' => 'de'} # request.to_ivs(:name, :q) # # @q # => 'google' # @name # => 'manveru' # @lang # => nil # def to_instance_variables(*args) instance = Current.action.instance args.each do |arg| next unless value = self[arg] instance.instance_variable_set("@#{arg}", value) end end alias to_ivs to_instance_variables def accept_charset(default = 'UTF-8') return default unless charsets = env['HTTP_ACCEPT_CHARSET'] charset = charsets.split(',', 2).first charset == '*' ? default : charset end ## # Try to find out which languages the client would like to have and sort # them by weight, (most wanted first). # # Returns and array of locales from env['HTTP_ACCEPT_LANGUAGE]. # e.g. ["fi", "en", "ja", "fr", "de", "es", "it", "nl", "sv"] # # Usage: # # request.accept_language # => ['en-us', 'en', 'de-at', 'de'] # # @param [String #to_s] string the value of HTTP_ACCEPT_LANGUAGE # @return [Array] list of locales # @see Request#accept_language_with_weight # @author manveru # def accept_language(string = env['HTTP_ACCEPT_LANGUAGE']) return [] unless string accept_language_with_weight(string).map{|lang, weight| lang } end alias locales accept_language ## # Transform the HTTP_ACCEPT_LANGUAGE header into an Array with: # # [[lang, weight], [lang, weight], ...] # # This algorithm was taken and improved from the locales library. # # Usage: # # request.accept_language_with_weight # # => [["en-us", 1.0], ["en", 0.8], ["de-at", 0.5], ["de", 0.3]] # # @param [String #to_s] string the value of HTTP_ACCEPT_LANGUAGE # @return [Array] array of [lang, weight] arrays # @see Request#accept_language # @author manveru # def accept_language_with_weight(string = env['HTTP_ACCEPT_LANGUAGE']) string.to_s.gsub(/\s+/, '').split(','). map{|chunk| chunk.split(';q=', 2) }. map{|lang, weight| [lang, weight ? weight.to_f : 1.0] }. sort_by{|lang, weight| -weight } end INTERESTING_HTTP_VARIABLES = (/USER|HOST|REQUEST|REMOTE|FORWARD|REFER|PATH|QUERY|VERSION|KEEP|CACHE/) # Interesting HTTP variables from env def http_variables env.reject{|key, value| key.to_s !~ INTERESTING_HTTP_VARIABLES } end alias http_vars http_variables REQUEST_STRING_FORMAT = "#<%s params=%p cookies=%p env=%p>" def to_s REQUEST_STRING_FORMAT % [self.class, params, cookies, http_variables] end alias inspect to_s # Pretty prints current action with parameters, cookies and enviroment # variables. def pretty_print(pp) pp.object_group(self) do group = { 'params' => params, 'cookies' => cookies, 'env' => http_variables } group.each do |name, hash| pp.breakable pp.text " @#{name}=" pp.nest(name.size + 3){ pp.pp_hash(hash) } end end end end # Request end # Ramaze ramaze-2012.12.08/lib/ramaze/cache/0000755000004100000410000000000012140566653016516 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/cache/memcache.rb0000644000004100000410000001621112140566653020606 0ustar www-datawww-datarequire 'dalli' # Kgio gives a nice performance boost but it isn't required begin; require 'kgio'; rescue LoadError => e; end #:nodoc: module Ramaze #:nodoc: class Cache ## # Cache driver for the Memcache storage engine. Memcache is a key/value # store that's extremely useful for caching data such as views or API # responses. More inforamtion about Memcache can be found on it's website: # . # # Note that this cache driver requires the Dalli gem rather than Memcache # Client. The reason for this is that the Memcache client hasn't been # updated in over a year and Memcache has changed quite a bit. Dalli is also # supposed to be faster and better coded. This cache driver will also try to # load the kgio Gem if it's installed, if it's not it will just continue to # operate but you won't get the nice speed boost. # # This driver works similar to Ramaze::Cache::Sequel in that it allows you # to specify instance specific options uisng the using() method: # # Ramaze::Cache.options.session = Ramaze::Cache::MemCache.using( # :compression => false # ) # # All options sent to the using() method will be sent to Dalli. # # @example Using the default options # Ramaze::Cache.options.view = Ramaze::Cache::MemCache # Ramaze.setup_dependencies # # Ramaze::Cache.view.store(:my_view, 'Hello Ramaze') # # @example Using custom options # Ramaze::Cache.options.view = Ramaze::Cache::MemCache.using( # :compression => false, # :servers => ['localhost:11211', 'localhost:112112'] # ) # # Ramaze.setup_dependencies # Ramaze::Cache.view.store(:my_view, 'Hello Ramaze') # # @author Yorick Peterse # @since 04-05-2011 # class MemCache include Cache::API include Innate::Traited # The maximum Time To Live that can be used in Memcache MAX_TTL = 2592000 # Hash containing the default configuration options to use for Dalli trait :default => { # The default TTL for each item :expires_in => 604800, # Compresses everything with Gzip if it's over 1K :compress => true, # Array containing all default Memcache servers :servers => ['localhost:11211'] } # Hash containing all the default options merged with the user specified # ones attr_accessor :options class << self attr_accessor :options ## # This method will create a subclass of Ramaze::Cache::MemCache with all # the custom options set. All options set in this method will be sent to # Dalli as well. # # Using this method allows you to use different memcache settings for # various parts of Ramaze. For example, you might want to use servers A # and B for storing the sessions but server C for only views. Most of # the way this method works was inspired by Ramaze::Cache::Sequel which # was contributed by Lars Olsson. # # @example # Ramaze::Cache.options.session = Ramaze::Cache::MemCache.using( # :compression => false, # :username => 'ramaze', # :password => 'ramaze123', # :servers => ['othermachine.com:12345'] # ) # # @author Yorick Peterse # @since 04-05-2011 # @param [Hash] options A hash containing all configuration options to # use for Dalli. For more information on all the available options you # can read the README in their repository. This repository can be found # here: https://github.com/mperham/dalli # def using(options = {}) merged = Ramaze::Cache::MemCache.trait[:default].merge(options) Class.new(self) { @options = merged } end end # class << self ## # Creates a new instance of the cache class. # # @author Michael Fellinger # @since 04-05-2011 # @param [Hash] options A hash with custom options, see # Ramaze::Cache::MemCache.using for all available options. # def initialize(options = {}) self.class.options ||= Ramaze::Cache::MemCache.trait[:default].merge( options ) @options = options.merge(self.class.options) end ## # Prepares the cache by creating the namespace and an instance of a Dalli # client. # # @author Yorick Peterse # @since 04-05-2011 # @param [String] hostname The hostname of the machine running the # application. # @param [String] username The name of the user executing the process # @param [String] appname Unique identifier for the application. # @param [String] cachename The namespace to use for this cache instance. # def cache_setup(hostname, username, appname, cachename) # Validate the maximum TTL if options[:expires_in] > MAX_TTL raise(ArgumentError, "The maximum TTL of Memcache is 30 days") end options[:namespace] = [ hostname, username, appname, cachename ].compact.join('-') @client = ::Dalli::Client.new(options[:servers], options) end ## # Removes all items from the cache. # # @author Yorick Peterse # @since 04-05-2011 # def cache_clear @client.flush end ## # Removes the specified keys from the cache. # # @author Yorick Peterse # @since 04-05-2011 # @param [Array] keys The keys to remove from the cache. # def cache_delete(*keys) keys.each do |key| @client.delete(key) end end ## # Fetches the specified key from the cache. It the value was nil the # default value will be returned instead. # # @author Yorick Peterse # @since 04-05-2011 # @param [String] key The name of the key to retrieve. # @param [Mixed] default The default value. # @return [Mixed] # def cache_fetch(key, default = nil) value = @client.get(key) if value.nil? return default else return value end end ## # Sets the given key to the specified value. Optionally you can specify a # hash with options specific to the key. Once a key has been stored it's # value will be returned. # # @author Yorick Peterse # @since 04-05-2011 # @param [String] key The name of the key to store. # @param [Mixed] value The value to store in Memcache. # @param [Fixnum] ttl The Time To Live to use for the current key. # @param [Hash] options A hash containing options specific for the # specified key. # @return [Mixed] # def cache_store(key, value, ttl = nil, options = {}) ttl = options.delete(:ttl) || @options[:expires_in] if ttl > MAX_TTL raise(ArgumentError, "The maximum TTL of Memcache is 30 days") end @client.set(key, value, ttl, options) return value end end # MemCache end # Cache end # Ramaze ramaze-2012.12.08/lib/ramaze/cache/localmemcache.rb0000644000004100000410000000307412140566653021624 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'localmemcache' module Ramaze class Cache # Cache based on the localmemcache library which utilizes mmap to share # strings in memory between ruby instances. class LocalMemCache include Cache::API OPTIONS = { :size_mb => 1024, :serialize => true, :serializer => ::Marshal, # something that responds to ::load and ::dump } # Connect to localmemcache def cache_setup(host, user, app, name) @namespace = [host, user, app, name].compact.join('-') options = {:namespace => @namespace}.merge(OPTIONS) @serialize = options.delete(:serialize) @serializer = options.delete(:serializer) @store = ::LocalMemCache.new(options) end # Wipe out _all_ data in localmemcached, use with care. def cache_clear @store.clear end def cache_delete(*args) super { |key| @store.delete(key.to_s); nil } end # NOTE: # * We have no way of knowing whether the value really is nil, we # assume you wouldn't cache nil and return the default instead. def cache_fetch(*args) super { |key| value = @store[key.to_s] @serializer.load(value) if value } end def cache_store(*args) super { |key, value| @store[key.to_s] = @serializer.dump(value) } end end # LocalMemCache end # Cache end # Ramaze ramaze-2012.12.08/lib/ramaze/cache/redis.rb0000644000004100000410000001244512140566653020157 0ustar www-datawww-datarequire 'redis' module Ramaze class Cache ## # The Redis cache is a cache driver for Redis (http://redis.io/). Redis is a # key/value store similar to Memcached but with the ability to flush data to # a file among various other features. # # The usage of this cache is very similar to the Memcache driver. You load # it by simply specifying the class: # # Ramaze::Cache.options.session = Ramaze::Cache::Redis # # If you want to specify custom options you can do so by calling {.using} on # the class: # # Ramaze::Cache.options.session = Ramaze::Cache::Redis.using(...) # # @example Using a custom Redis host # Ramaze::Cache.options.names.push(:redis) # Ramaze::Cache.options.redis = Ramaze::Cache::Redis.using( # :host => '123.124.125.126', # :port => 6478 # ) # # @author Michael Fellinger # @since 09-10-2011 # class Redis include Cache::API include Innate::Traited # Hash containing all the default options to use when no custom ones are # specified in .using(). trait :default => { :expires_in => 604800, :host => 'localhost', :port => 6379 } # Hash containing all the default options merged with the user specified # ones. attr_accessor :options class << self attr_accessor :options ## # Creates a new instance of the cache class and merges the default # options with the custom ones. # # Using this method you can specify custom options for various caches. # For example, the Redis cache for your sessions could be located at # server #1 while a custom cache is located on server #2. # # @author Yorick Peterse # @since 09-10-2011 # @param [Hash] options A hash containing custom options. # @option options [Fixnum] :expires_in The default time after which a # key should expire. # @option options [String] :host The hostname of the machine on which # Redis is running. # @option options [Fixnum] :port The port number to connect to. # def using(options = {}) merged = Ramaze::Cache::Redis.trait[:default].merge(options) Class.new(self) { @options = merged } end end # class << self ## # Creates a new instance of the cache and merges the options if they # haven't already been set. # # @author Michael Fellinger # @param [Hash] options A hash with custom options. See # Ramaze::Cache::Redis.using() and the trait :default for more # information. # def initialize(options = {}) self.class.options ||= Ramaze::Cache::Redis.trait[:default].merge(options) @options = options.merge(self.class.options) end ## # Prepares the cache by setting up the namespace and loading Redis. # # @author Michael Fellinger # @since 09-10-2011 # @param [String] hostname The host of the machine that's running the # Ramaze application. # @param [String] username The name of the user that's running the # application. # @param [String] appname The name of the application (:pristine by # default). # @param [String] cachename The namespace to use for this cache instance. # def cache_setup(hostname, username, appname, cachename) options[:namespace] = [ 'ramaze', hostname, username, appname, cachename ].compact.join(':') @client = ::Redis.new(options) end ## # Clears the entire cache. # # @author Michael Fellinger # @since 09-10-2011 # def cache_clear @client.flushall end ## # Removes a number of keys from the cache. # # @author Michael Fellinger # @param [Array] keys An array of key names to remove. # def cache_delete(*keys) @client.del(*keys.map{|key| namespaced_key(key) }) end ## # Retrieves the value of the given key. If no value could be retrieved the # default value (set to nil by default) will be returned instead. # # @author Michael Fellinger # @param [String] key The name of the key to retrieve. # @param [Mixed] default The default value. # @return [Mixed] # def cache_fetch(key, default = nil) value = @client.get(namespaced_key(key)) value.nil? ? default : ::Marshal.load(value) end ## # Stores a new value under the given key. # # @author Michael Fellinger # @param [String] key The name of the key to store. # @param [Mixed] value The value of the key. # @param [Fixnum] ttl The Time To Live of the key. # @param [Hash] options A hash containing key specific options. # @option options :expires_in The time after which the key should expire. # def cache_store(key, value, ttl = nil, options = {}) ttl = options[:ttl] || @options[:expires_in] @client.setex(namespaced_key(key), ttl, ::Marshal.dump(value)) return value end def namespaced_key(key) [options[:namespace], key].join(':') end end # Redis end # Cache end # Ramaze ramaze-2012.12.08/lib/ramaze/cache/lru.rb0000644000004100000410000000441212140566653017646 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze class Cache ## # Cache class that uses {Ramaze::LRUHash} as a storage engine. This cache # has the advantage that unlike Innate::Cache::Memory it does not leak # memory over time when using the cache for sessions. # # @example # Ramaze::Cache.options.session = Ramaze::Cache::LRU # Ramaze.setup_dependencies # # @author Michael Fellinger # @since 17-07-2009 # class LRU include Cache::API # Hash containing all the options for the cache. OPTIONS = { # expiration in seconds :expiration => nil, # maximum elements in the cache :max_count => 10000, # maximum total memory usage of the cache :max_total => nil, # maximum memory usage of an element of the cache :max_value => nil, } ## # Prepares the cache by creating a new instance of Ramaze::LRUHash using # the options set in {Ramaze::Cache::LRU::OPTIONS}. # # @author Michael Fellinger # @since 17-07-2009 # def cache_setup(host, user, app, name) @store = Ramaze::LRUHash.new(OPTIONS) end ## # Clears the entire cache. # # @author Michael Fellinger # @since 17-07-2009 # def cache_clear @store.clear end ## # Stores a set of data in the cache. # # @author Michael Fellinger # @since 17-07-2009 # @see Innate::Cache::API#cache_store # def cache_store(*args) super { |key, value| @store[key] = value } end ## # Retrieves a set of data from the cache. # # @author Michael Fellinger # @since 17-07-2009 # @see Innate::Cache::API#cache_fetch # def cache_fetch(*args) super { |key| @store[key] } end ## # Deletes a set of data from the cache # # @author Michael Fellinger # @since 17-07-2009 # @see Innate::Cache::API#cache_delete # def cache_delete(*args) super { |key| @store.delete(key) } end end # LRU end # Cache end # Ramaze ramaze-2012.12.08/lib/ramaze/cache/sequel.rb0000644000004100000410000003030412140566653020341 0ustar www-datawww-datarequire 'sequel' module Ramaze class Cache ## # The Sequel cache is a cache system that uses the Sequel database toolkit # to store the data in a DBMS supported by Sequel. Examples of these # databases are MySQL, SQLite3 and so on. In order to use this cache you'd # have to do the following: # # Ramaze::Cache.options.view = Ramaze::Cache::Sequel.using( # :connection => Sequel.mysql( # :host => 'localhost', # :user => 'user', # :password => 'password', # :database => 'blog' # ), # :table => :blog_sessions # ) # # If you already have an existing connection you can just pass the object to # the :connection option instead of creating a new connection manually. # # Massive thanks to Lars Olsson for patching the original Sequel cache so # that it supports multiple connections and other useful features. # # @example Setting a custom database connection # Ramaze::Cache.options.names.push(:sequel) # Ramaze::Cache.options.sequel = Ramaze::Cache::Sequel.using( # :connection => Sequel.connect( # :adapter => 'mysql2', # :host => 'localhost', # :username => 'cache', # :password => 'cache123', # :database => 'ramaze_cache' # ) # ) # # @author Lars Olsson # @since 18-04-2011 # class Sequel include Cache::API include Innate::Traited # Hash containing the default options trait :default => { # The default Sequel connection to use :connection => nil, # Whether or not warnings should be displayed :display_warnings => false, # The name of the default database table to use :table => 'ramaze_cache', # The default TTL to use :ttl => nil } # Hash containing all the default options merged with the user specified # ones attr_accessor :options class << self attr_accessor :options ## # This method returns a subclass of Ramaze::Cache::Sequel with the # provided options set. This is necessary because Ramaze expects a class # and not an instance of a class for its cache option. # # You can provide any parameters you want, but those not used by the # cache will not get stored. No parameters are mandatory. Any missing # parameters will be replaced by default values. # # @example # ## # # This will create a mysql session cache in the blog # # database in the table blog_sessions # # Please note that the permissions on the database must # # be set up correctly before you can just create a new table # # # Ramaze.options.cache.session = Ramaze::Cache::Sequel.using( # :connection => Sequel.mysql( # :host =>'localhost', # :user =>'user', # :password =>'password', # :database =>'blog' # ), # :table => :blog_sessions # ) # # @author Lars Olsson # @since 18-04-2011 # @param [Object] options A hash containing the options to use # @option options [Object] :connection a Sequel database object # (Sequel::Database) You can use any parameters that Sequel supports for # this object. If this option is left unset, a Sqlite memory database # will be used. # @option options [String] :table The table name you want to use for the # cache. Can be either a String or a Symbol. If this option is left # unset, a table called ramaze_cache will be used. # @option options [Fixnum] :ttl Setting this value will override # Ramaze's default setting for when a particular cache item will be # invalidated. By default this setting is not used and the cache uses # the values provided by Ramaze, but if you want to use this setting it # should be set to an integer representing the number of seconds before # a cache item becomes invalidated. # @option options [TrueClass] :display_warnings When this option is set # to true, failure to serialiaze or deserialize cache items will produce # a warning in the Ramaze log. This option is set to false by default. # Please note that certain objects (for instance Procs) cannot be # serialized by ruby and therefore cannot be cached by this cache class. # Setting this option to true is a good way to find out if the stuff you # are trying to cache is affected by this. Failure to # serialize/deserialize a cache item will never raise an exception, the # item will just remain uncached. # @return [Object] # def using(options = {}) merged = Ramaze::Cache::Sequel.trait[:default].merge(options) Class.new(self) { @options = merged } end end ## # Creates a new instance of the cache class. # # @author Michael Fellinger # @since 04-05-2011 # @param [Hash] options A hash with custom options, see # Ramaze::Cache::Sequel.using for all available options. # def initialize(options = {}) self.class.options ||= Ramaze::Cache::Sequel.trait[:default].merge( options ) @options = options.merge(self.class.options) end ## # Executed after #initialize and before any other method. # # Some parameters identifying the current process will be passed so caches # that act in one global name-space can use them as a prefix. # # @author Lars Olsson # @since 18-04-2011 # @param [String] hostname the hostname of the machine # @param [String] username user executing the process # @param [String] appname identifier for the application # @param [String] cachename namespace, like 'session' or 'action' # def cache_setup(hostname, username, appname, cachename) @namespace = [hostname, username, appname, cachename].compact.join(':') # Create the table if it's not there yet if !options[:connection].table_exists?(options[:table]) options[:connection].create_table( options[:table]) do primary_key :id String :key , :null => false, :unique => true String :value, :text => true Time :expires end end @dataset = options[:connection][options[:table].to_sym] end ## # Remove all key/value pairs from the cache. Should behave as if #delete # had been called with all +keys+ as argument. # # @author Lars Olsson # @since 18-04-2011 # def cache_clear @dataset.delete end ## # Remove the corresponding key/value pair for each key passed. If removing # is not an option it should set the corresponding value to nil. # # If only one key was deleted, answer with the corresponding value. If # multiple keys were deleted, answer with an Array containing the values. # # @author Lars Olsson # @since 18-04-2011 # @param [Object] key The key for the value to delete # @param [Object] keys Any other keys to delete as well # @return [Object/Array/nil] # def cache_delete(key, *keys) # Remove a single key if keys.empty? nkey = namespaced(key) result = @dataset.select(:value).filter(:key => nkey).limit(1) # Ramaze expects nil values if result.empty? result = nil else result = deserialize(result.first[:value]) end @dataset.filter(:key => nkey).delete # Remove multiple keys else nkeys = [key, keys].flatten.map! { |n| namespaced(n) } result = dataset.select(:value).filter(:key => nkeys) result.map! do |row| deserialize(row[:value]) end @dataset.filter(:key => nkeys).delete end return result end ## # Answer with the value associated with the +key+, +nil+ if not found or # expired. # # @author Lars Olsson # @since 18-04-2011 # @param [Object] key The key for which to fetch the value # @param [Object] default Will return this if no value was found # @return [Object] # def cache_fetch(key, default = nil) nkey = namespaced(key) # Delete expired rows @dataset.select.filter(:key => nkey) do expires < Time.now end.delete # Get remaining row (if any) result = @dataset.select(:value).filter(:key => nkey).limit(1) if result.empty? return default else return deserialize(result.first[:value]) end end ## # Sets the given key to the given value. # # @example # Cache.value.store(:num, 3, :ttl => 20) # Cache.value.fetch(:num) # # @author Lars Olsson # @since 18-04-2011 # @param [Object] key The value is stored with this key # @param [Object] value The key points to this value # @param [Hash] options for now, only :ttl => Fixnum is used. # @option options [Fixnum] :ttl The time in seconds after which the cache # item should be expired. # def cache_store(key, value, options = {}) nkey = namespaced(key) # Get the time after which the cache should be expired if options[:ttl] ttl = options[:ttl] else ttl = Ramaze::Cache::Sequel.options[:ttl] end expires = Time.now + ttl if ttl # The row already exists, update it. if @dataset.filter(:key => nkey).count == 1 serialized_value = serialize(value) if serialized_value @dataset.filter(:key => nkey) \ .update(:value => serialize(value), :expires => expires) end # The row doesn't exist yet. else serialized_value = serialize(value) if serialized_value @dataset.insert( :key => nkey, :value => serialize(value), :expires => expires ) end end # Try to deserialize the value. If this fails we'll return a different # value deserialized = deserialize(@dataset.select(:value) \ .filter(:key => nkey) \ .limit(1).first[:value]) if deserialized return deserialized else return value end end ## # Prefixes the given key with current namespace. # # @author Lars Olsson # @since 18-04-2011 # @param [Object] key Key without namespace. # @return [Object] # def namespaced(key) return [@namespace, key].join(':') end ## # Deserialize method, adapted from Sequels serialize plugin # This method will try to deserialize a value using Marshal.load # # @author Lars Olsson # @since 18-04-2011 # @param [Object] value Value to be deserialized # @return [Object nil] # def deserialize(value) begin ::Marshal.load(value.unpack('m')[0]) rescue begin ::Marshal.load(value) rescue # Log the error? if options[:display_warnings] === true Ramaze::Log::warn("Failed to deserialize #{value.inspect}") end return nil end end end ## # Serialize method, adapted from Sequels serialize plugin # This method will try to serialize a value using Marshal.dump # # @author Lars Olsson # @since 18-04-2011 # @param [Object] value Value to be serialized. # @return [Object nil] # def serialize(value) begin [::Marshal.dump(value)].pack('m') rescue if options[:display_warnings] === true Ramaze::Log::warn("Failed to serialize #{value.inspect}") end return nil end end end # Sequel end # Cache end # Ramaze ramaze-2012.12.08/lib/ramaze/spec/0000755000004100000410000000000012140566653016405 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/spec/helper/0000755000004100000410000000000012140566653017664 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/spec/helper/snippets.rb0000644000004100000410000000064212140566653022060 0ustar www-datawww-dataif caller snippet = caller.grep(%r!spec/snippets/!).first.split(':').first require File.expand_path(snippet).gsub('/spec/', '/lib/ramaze/') if defined?(Ramaze::CoreExtensions) Ramaze::CoreExtensions.constants.each do |const| ext = Ramaze::CoreExtensions.const_get(const) into = Module.const_get(const) into.__send__(:include, ext) end end end require 'bacon' Bacon.summary_on_exit ramaze-2012.12.08/lib/ramaze/spec/helper/template_examples.rb0000644000004100000410000000140112140566653023716 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. shared :template_spec do behaves_like :rack_test def spec_template(spec_engine) it 'works on /' do get('/').body.strip. should =~ %r{Home\s+\|\s+internal\s+\|\s+external} end %w[/internal /external].each do |url| it "works on #{url}" do html = get(url).body html.should.not == nil html.should =~ %r{Template::#{spec_engine} (internal|external)} html.should =~ %r{

The (internal|external) Template for #{spec_engine}

} end end end end ramaze-2012.12.08/lib/ramaze/spec/helper/pretty_output.rb0000644000004100000410000000343312140566653023163 0ustar www-datawww-datamodule Bacon module PrettyOutput NAME = '' # store name and run def handle_specification(name) NAME.replace name puts NAME yield puts end # Core, yields the requirement and outputs problems def handle_requirement(description) print "- #{description}\n" error = yield unless error.empty? if defined?(Ramaze::Logging) puts '', " #{NAME} -- #{description} [FAILED]".center(70, '-'), '' colors = Ramaze::Logger::Informer::COLORS until RamazeLogger.history.empty? tag, line = RamazeLogger.history.shift out = "%6s | %s" % [tag.to_s, line] puts out.send(colors[tag]) end end general_error end end # Show nicer output on error def general_error puts "", ErrorLog ErrorLog.scan(/^\s*(.*?):(\d+): #{NAME} - (.*?)$/) do puts "#{ENV['EDITOR'] || 'vim'} #$1 +#$2 # #$3" end ErrorLog.replace '' end # output summary def handle_summary puts puts "%d tests, %d assertions, %d failures, %d errors" % Counter.values_at(:specifications, :requirements, :failed, :errors) end end end if defined?(Ramaze::Logging) module Ramaze # Special Logger, stores everything in its history class SpecLogger include Ramaze::Logging include Enumerable attr_accessor :history # Create new history def initialize @history = [] end # Yield the history def each @history.each{|e| yield(e) } end # general log def log(tag, str) @history << [tag, str] end end end module Bacon::PrettyOutput RamazeLogger = Ramaze::SpecLogger.new Ramaze::Log.loggers = [RamazeLogger] end end ramaze-2012.12.08/lib/ramaze/spec/helper/bacon.rb0000644000004100000410000000030312140566653021267 0ustar www-datawww-datarequire File.expand_path(File.join(File.dirname(__FILE__), '../../../ramaze')) require 'bacon' require 'ramaze/spec/helper/pretty_output' Bacon.extend Bacon::PrettyOutput Bacon.summary_on_exit ramaze-2012.12.08/lib/ramaze/spec/bacon.rb0000644000004100000410000000152012140566653020012 0ustar www-datawww-datarequire File.expand_path('../../../ramaze', __FILE__) require 'bacon' require 'innate/spec/bacon' Ramaze.middleware(:spec) { run Ramaze.core } def spec_requires(*libs) spec_precondition 'require' do libs.each { |lib| require(lib) } end end alias spec_require spec_requires def spec_precondition(name) yield rescue LoadError => ex puts "Spec require: %p failed: %p" % [name, ex.message] exit 0 rescue Exception => ex puts "Spec precondition: %p failed: %p" % [name, ex.message] exit 0 end shared :rack_test do Ramaze.setup_dependencies extend Rack::Test::Methods def app; Ramaze; end end shared :webrat do behaves_like :rack_test require 'webrat' Webrat.configure { |config| config.mode = :rack } extend Webrat::Methods extend Webrat::Matchers end # Ignore log messages Ramaze::Log.level = Logger::ERROR ramaze-2012.12.08/lib/ramaze/reloader/0000755000004100000410000000000012140566653017250 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/reloader/watch_inotify.rb0000644000004100000410000000507112140566653022447 0ustar www-datawww-datamodule Ramaze class Reloader ## # TODO: # * There seems to be a problem somewhere that I couldn't identify yet, a # file has to be modified twice initially to make it show up as # modified here, subsequent changes work just fine. # The only workaround I could find right now would be to read/write # every single file, but that would be unexpected, irresponsible, and # error-prone. # # NOTE: # * I have changed from using a Mutex to using a Queue, which uses a # Mutex internally. class WatchInotify POLL_INTERVAL = 2 # seconds NOTIFY_MASK = RInotify::MODIFY | RInotify::IN_ONESHOT def initialize @watcher = RInotify.new @changed = Queue.new @watcher_thread = start_watcher end def call(cooldown) yield end # TODO: define a finalizer to cleanup? -- reloader never calls #close def start_watcher Thread.new{ loop{ watcher_cycle }} end # Not much work here, we just have to empty the event queue and push the # descriptors for reloading on next request. def watcher_cycle return unless @watcher.wait_for_events(POLL_INTERVAL) @watcher.each_event do |event| @changed.push(event.watch_descriptor) end end def watch(file) return if @watcher.watch_descriptors.has_value?(file) return unless File.exist?(file) @watcher.add_watch(file, NOTIFY_MASK) rescue Errno::ENOENT retry end # FIXME: # Seems like this won't work due to some bug in the rinotify library. # Would be cool if someone could make a FFI version. def remove_watch(file) @watcher.rm_watch(file) end def close @watcher_thread.terminate @watcher.close true end # NOTE: # We have to add the changed file again after we got a notification, I # have no idea why, but using IN_ONESHOT should make sure that there is # no memory leak in the C level even if we add a file again. # There is a memory leak however in the watch_descriptors hash, since # rinotify won't synchronize the contents properly and will only add to # the hash, so we have to clean up ourselves. def changed_files until @changed.empty? descriptor = @changed.shift file = @watcher.watch_descriptors.delete(descriptor) watch(file) yield(file) end end end # WatchInotify end # Reloader end # Ramaze ramaze-2012.12.08/lib/ramaze/reloader/watch_stat.rb0000644000004100000410000000235712140566653021745 0ustar www-datawww-datamodule Ramaze class Reloader class WatchStat def initialize # @files[file_path] = stat @files = {} @last = Time.now end def call(cooldown) if cooldown and Time.now > @last + cooldown yield @last = Time.now end end # start watching a file for changes # true if succeeded, false if failure def watch(file) return true if watching?(file) # if already watching if stat = safe_stat(file) @files[file] = stat end end def watching?(file) @files.has_key?(file) end # stop watching a file for changes def remove_watch(file) @files.delete(file) end # no need for cleanup def close end # return files changed since last call def changed_files @files.each do |file, stat| if new_stat = safe_stat(file) if new_stat.mtime > stat.mtime @files[file] = new_stat yield(file) end end end end def safe_stat(file) File.stat(file) rescue Errno::ENOENT, Errno::ENOTDIR nil end end # WatchStat end # Reloader end # Ramaze ramaze-2012.12.08/lib/ramaze/controller.rb0000644000004100000410000001202512140566653020163 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze ## # Ramaze::Controller is the base controller of all controllers when developing # applications in Ramaze. It acts as a nice wrapper around Innate::Node and # allows for a more traditional MVC approach. # # @example An example controller # class Posts < Ramaze::Controller # map '/posts' # # def index # # end # end # # @author Michael Fellinger # @since 04-01-2009 # class Controller include Innate::Traited include Innate::Node # we are no mapped node Innate::Node::NODE_LIST.delete(self) # call our setup method one startup Ramaze.options.setup << self CONTROLLER_LIST = Set.new trait :app => :pristine trait :skip_controller_map => false ## # Hash containing the names of two common controller names and the URIs they # should be mapped to. # # @author Michael Fellinger # @since 04-01-2009 # IRREGULAR_MAPPING = { 'Controller' => nil, 'MainController' => '/' } ## # Modifies the extending class so that it's properly set up to be used as a # controller. # # @author Michael Fellinger # @since 04-01-2009 # @param [Class] into The class that extended Ramaze::Controller (or a sub # class). # def self.inherited(into) Innate::Node.included(into) into.helper(:layout) CONTROLLER_LIST << into into.trait :skip_node_map => true end ## # Sets all the controllers up and loads a default controller in case no # custom ones have been specified. # # @author Michael Fellinger # @since 04-01-2009 # def self.setup case CONTROLLER_LIST.size when 0 require 'ramaze/controller/default' when 1 controller = CONTROLLER_LIST.to_a.first begin controller.mapping rescue controller.map '/' end controller.setup_procedure else CONTROLLER_LIST.each do |list_controller| list_controller.setup_procedure end end end ## # Method that's used to setup each controller, called by # Ramaze::Controller.setup. # # @author Michael Fellinger # @since 04-01-2009 # def self.setup_procedure unless ancestral_trait[:provide_set] engine(:etanni) trait(:provide_set => false) end map(generate_mapping(name)) unless trait[:skip_controller_map] end ## # Sets the view engine to use for pages with a content type of text/html. # # @example # class Posts < Ramaze::Controller # engine :etanni # end # # @author Michael Fellinger # @since 04-01-2009 # @param [#to_sym] name The name of the view engine to use. # def self.engine(name) provide(:html, name.to_sym) end ## # Returns the URI a controller is mapped to. # # @author Michael Fellinger # @since 04-01-2009 # @return [String] # def self.mapping Ramaze.to(self) end ## # Generates a URI for the full namespace of a class. If a class is named # A::B::C the URI would be /a/b/c. # # @author Michael Fellinger # @since 04-01-2009 # @param [String] klass_name The name of the class for which to generate # the mapping, defaults to the current class. # @return [String] # def self.generate_mapping(klass_name = self.name) chunks = klass_name.to_s.split(/::/) return if chunks.empty? last = chunks.last if IRREGULAR_MAPPING.key?(last) irregular = IRREGULAR_MAPPING[last] return irregular if irregular.nil? || chunks.size == 1 chunks.pop chunks << irregular end chunks.unshift '' chunks.last.sub!(/Controller$/, '') chunks.map{|chunk| chunk.snake_case }.join('/').squeeze('/') end ## # Maps the current class to the specified location. # # @author Michael Fellinger # @since 04-01-2009 # @param [String] location The URI to map the controller to. # @param [String] app_name The name of the application the controller # belongs to. # def self.map(location, app_name = nil) if app_name trait :app => app_name else app_name = ancestral_trait[:app] end trait :skip_controller_map => true App.find_or_create(app_name).map(location, self) end ## # Returns the application to which the controller belongs to. # # @author Michael Fellinger # @since 04-01-2009 # @return [Ramaze::App] # def self.app App[ancestral_trait[:app]] end ## # Returns all the options for the application the controller belongs to. # # @author Michael Fellinger # @since 04-01-2009 # @return [Innate::Options] # def self.options return unless app = self.app app.options end end # Controller end # Ramaze ramaze-2012.12.08/lib/ramaze/helper.rb0000644000004100000410000000057212140566653017263 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'innate/helper' module Ramaze Helper = Innate::Helper Innate::HelpersHelper.options.paths << File.dirname(__FILE__) require 'ramaze/helper/flash' require 'ramaze/helper/link' require 'ramaze/helper/layout' end ramaze-2012.12.08/lib/ramaze/current.rb0000644000004100000410000000110412140566653017456 0ustar www-datawww-datamodule Ramaze ## # Class that's used to point to the current action. This can be useful if you # want to access data such as the session() method without having to include # Innate::Trinity (which can pollute your namespace and/or cause collisions). # # @author Michael Fellinger # @since 25-03-2009 # class Current < Innate::Current ## # @author Michael Fellinger # @since 25-03-2009 # @see Innate::Current#setup def setup(env, request = Request, response = Response, session = Session) super end end # Current end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/0000755000004100000410000000000012140566653016732 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/helper/request_accessor.rb0000644000004100000410000000076312140566653022637 0ustar www-datawww-datamodule Ramaze module Helper module RequestAccessor classes = [Rack::Request, Innate::Request, Ramaze::Request] methods = classes.map { |klass| klass.instance_methods(false) }.flatten.uniq methods.each do |method| if method =~ /=/ eval("def %s(a) request.%s a; end" % [method, method]) else eval("def %s(*a) request.%s(*a); end" % [method, method]) end end end # RequestAccessor end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/remarkably.rb0000644000004100000410000000043612140566653021413 0ustar www-datawww-datarequire 'remarkably' module Ramaze module Helper module Remarkably include ::Remarkably::Common # Avoid calling the Helper::Link#a method def a(*args, &block) method_missing(:a, *args, &block) end end # Remarkably end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/send_file.rb0000644000004100000410000000240712140566653021212 0ustar www-datawww-datamodule Ramaze module Helper ## # The SendFile module can be used to stream a file to the user's computer. # While the performance of the module isn't optimal it's convenient and # relatively easy to use. # module SendFile ## # The send_file method streams the specified file to the user's browser. # # @param [String] filename The name or path to the file which will be # streamed to the user. # @param [String] content_type The type of file we're dealing with. For # example, if we want to stream a JPG image we'd set this variable to # 'image/jpg'. # @param [String] content_disposition Value for the Content-Disposition # header. # def send_file(filename, content_type = nil, content_disposition = nil) content_type ||= Rack::Mime.mime_type(::File.extname(filename)) content_disposition ||= File.basename(filename) response.body = ::File.open(filename, 'rb') response['Content-Length'] = ::File.size(filename).to_s response['Content-Type'] = content_type response['Content-Disposition'] = content_disposition response.status = 200 throw(:respond, response) end end # SendFile end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/simple_captcha.rb0000644000004100000410000000327312140566653022240 0ustar www-datawww-datamodule Ramaze module Helper # Produce very simple question/answer pairs. # # The default is a trivial mathematical problem. # # Usage (trait is optional): # # class RegisterController < Ramaze::Controller # trait :captcha => lambda{ # ["the answer to everything", "42"] # } # # def index # %( #
# What is #{simple_captcha}? # " # #
# ).strip # end # # def answer # check_captcha(request[:answer]) # end # end # module SimpleCaptcha include Ramaze::Traited NUMBERS = [5, 10, 15, 20] # lambda should return question and answer in [question, answer] form trait :captcha => lambda{ ns = Array.new(2){ NUMBERS.sort_by{rand}.first }.sort op = rand > 0.42 ? [ns[0], :+, ns[1]] : [ns[1], :-, ns[0]] question = op.join(' ') answer = op[0].send(op[1], op[2]) [question, answer] } # Call the trait[:captcha] and store question/answer in session def simple_captcha question, answer = ancestral_trait[:captcha].call session[:CAPTCHA] = { :question => question, :answer => answer.to_s } question end # check the given +answer+ against the answer stored in the session. def check_captcha(answer) return false unless captcha = session[:CAPTCHA] answer.to_s.strip == captcha[:answer].to_s end end # SimpleCaptcha end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/flash.rb0000644000004100000410000000374612140566653020366 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze # The purpose of this class is to provide an easy way of setting/retrieving # from the current flash. # # Flash is a way to keep a temporary pairs of keys and values for the duration # of two requests, the current and following. # # Time for an example. On the first request, for example on registering: # # flash[:error] = "You should reconsider your username, it's taken already" # redirect r(:register) # # This is the request from the redirect: # # do_stuff if flash[:error] # # On the request after this, flash[:error] is gone. module Helper module Flash include Innate::Traited trait :flashbox => "
%value
" ## # Return the current value of Current.session.flash # def flash Current.session.flash end # Use in your template to display all flash messages that may be stored. # For example, given you stored: # # flash # => { :error => 'Please enter your name' # :info => 'Do you see the fnords?' } # # Then a flashbox would display: # #
Please enter your name
#
Do you see the fnords?
# # This is designed to be customized permanently or per usage: # # flashbox("
%value
") # # Where any occurrence of %key and %value will be replaced by the actual # contents of each element of flash def flashbox(tag = ancestral_trait[:flashbox]) flash.map{|key, *values| values.flatten.map do |value| tag.gsub(/%key/, key.to_s).gsub(/%value/, value.to_s) end }.flatten.join("\n") end end # Flash end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/markaby.rb0000644000004100000410000000207012140566653020704 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module Helper # Allows you to use some shortcuts for markaby in your Controller. module Markaby ## # Use this inside your controller to directly build Markaby # Refer to the Markaby-documentation and testsuite for more examples. # # @example # mab { h1 "Apples & Oranges"} #=> "

Apples & Oranges

" # mab { h1 'Apples', :class => 'fruits&floots' } # def markaby(ivs = {}, helpers = nil, &block) builder = ::Markaby::Builder builder.extend(Ramaze::Helper::Methods) builder.send(:helper, :link) iv_hash = {} instance_variables.each do |iv| key, value = iv.gsub('@', '').to_sym, instance_variable_get(iv) iv_hash[key] = value end builder.new(iv_hash.merge(ivs), helpers, &block).to_s end alias mab markaby end # Markaby end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/localize.rb0000644000004100000410000000711512140566653021065 0ustar www-datawww-datarequire 'locale/tag' require 'locale' module Ramaze module Helper ## # The localization helper can be used to output translated strings. This # enables your application to use multiple language files for English, Dutch # and so on. # module Localize include Traited trait :localize_locale => ::Locale::Tag::Simple.new('en') trait :localize_charset => 'UTF-8' def localize(string, substitute = nil) localize_dictionary.translate(string, locales, substitute) end alias l localize def locale locales.first end def locales locales = request.env['localize.locales'] return locales if locales fallback = ancestral_trait[:localize_locale] locales = Parser.new(request).locales(fallback) request.env['localize.locales'] = locales end class Dictionary attr_reader :dict def initialize @dict = {} end def translate(string, locales, substitute) target = string.to_s.dup locales = locales.flatten.uniq if substitute substitute.each do |key, value| target.gsub!(/\{#{Regexp.escape(key)}\}/, lookup(value, locales)) end return target elsif target =~ /\{/ target.gsub!(/\{([^\}]+)\}/){ lookup($1, locales) } return target else lookup(target, locales) end end def lookup(string, locales) locales.each do |locale| next unless dict = self[locale] next unless translated = dict[string] return translated end string end def locales @dict.keys end def [](locale) @dict[arg_to_locale(locale)] end def []=(locale, dict) @dict[arg_to_locale(locale)] = dict end def load(locale, options = {}) if file = options.delete(:yaml) dict = ::YAML.load_file(file) elsif hash = options.delete(:hash) dict = hash elsif marshal = options.delete(:marshal) dict = Marshal.load(File.read(marshal)) else raise ArgumentError, "either :yaml, :marshal, or :hash" end @dict[arg_to_locale(locale)] = dict end private def arg_to_locale(arg, raises = true) if raises and not arg raise(ArgumentError, "%p cannot be converted to a Locale" % arg) end arg.respond_to?(:language) ? arg : ::Locale::Tag.parse(arg.to_s) end end class Parser attr_accessor :request def initialize(request) @request = request end def locales(fallback = nil) locales = [parse, fallback].flatten.uniq ::Locale::TagList.new(locales) end def parse parse_params || parse_session || parse_cookie || parse_header end def parse_params(key = 'lang') return unless lang = request.params[key] ::Locale::Tag.parse(lang) end def parse_session(key = :lang) return unless lang = Current.session[key] ::Locale::Tag.parse(lang) end def parse_cookie(key = 'lang') return unless lang = request.cookies[key] ::Locale::Tag.parse(lang) end def parse_header request.accept_language.map{|lang| ::Locale::Tag.parse(lang) } end end end # Localize end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/erector.rb0000644000004100000410000000617612140566653020734 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'erector' module Ramaze module Helper ## # Allows you to use some shortcuts for Erector in your Controller. # # use this inside your controller to directly build Erector # Refer to the Erector-documentation and testsuite for more examples. # # @example # erector { h1 "Apples & Oranges" } #=> "

Apples & Oranges

" # erector { h1(:class => 'fruits&floots'){ text 'Apples' } } # module Erector include ::Erector::Mixin class ::Erector::Widget alias :raw! :rawtext alias :old_css :css ## # Method that generates a XHTML 1.0 Strict doctype. # # @example # strict_html do # head do # title "Ramaze Rocks!" # end # body # div do # # end # end # end # # @param [Hash] args Hash containing extra options such as the xml:lang # and xmlns attribute. # @param [Block] block Block that contains the inner data of the # element. # def strict_xhtml(*args, &block) raw! '' raw! '' html(:xmlns => "http://www.w3.org/1999/xhtml", :"xml:lang" => "en", :lang => "en", &block) end ## # Generate a Javascript tag. # # @example # js 'javascript/jquery.js' # # @param [String] src The full or relative path to the Javascript file. # def js(src) script :src => src end ## # Generate a pair of conditional tags for a specific browser. # # @example # ie_if 'IE' do # ...... # end # # @param [String] expr The if expression, such as 'IE' or 'lte IE7'. # @param [block] block Block that contains the data that needs to be # loaded for the specified browser. # def ie_if(expr, &block) raw! "" end ## # Inspect the specified element. # # @param [String] elem The element to inspect. # def inspect(elem) text elem.inspect end ## # Generate a stylesheet tag. # # @example # css 'css/reset.css', :media => 'print' # # @param [String] href The path (either absolute or relative) to the CSS # file. # @param [Hash] args A hash containing additional arguments to add to # the CSS tag. # def css(href, args = {}) attrs = { :rel => "stylesheet", :href => href, :type => "text/css" }.merge(args) link attrs end end # Erector::Widget end # Erector end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/upload.rb0000644000004100000410000004676212140566653020562 0ustar www-datawww-datamodule Ramaze module Helper ## # Helper module for handling file uploads. File uploads are mostly handled # by Rack, but this helper adds some conveniance methods for handling # and saving the uploaded files. # # @example # class MyController < Ramaze::Controller # # Use upload helper # helper :upload # # # This action will handle *all* uploaded files # def handleupload1 # # Iterate over uploaded files and save them in the # # '/uploads/myapp' directory # get_uploaded_files.each_pair do |k, v| # v.save( # File.join('/uploads/myapp', v.filename), # :allow_overwrite => true # ) # # if v.saved? # Ramaze::Log.info( # "Saved uploaded file named #{k} to #{v.path}." # ) # else # Ramaze::Log.warn("Failed to save file named #{k}.") # end # end # end # # # This action will handle uploaded files beginning with 'up' # def handleupload2 # # Iterate over uploaded files and save them in the # # '/uploads/myapp' directory # get_uploaded_files(/^up.*/).each_pair do |k, v| # v.save( # File.join('/uploads/myapp', v.filename), # :allow_overwrite => true # ) # # if v.saved? # Ramaze::Log.info( # "Saved uploaded file named #{k} to #{v.path}." # ) # else # Ramaze::Log.warn("Failed to save file named #{k}.") # end # end # end # end # # @author Lars Olsson # @since 04-08-2011 # module Upload include Ramaze::Traited ## # This method will iterate through all request parameters and convert # those parameters which represents uploaded files to # Ramaze::Helper::Upload::UploadedFile objects. The matched parameters # will then be removed from the request parameter hash. # # Use this method if you want to decide whether to handle file uploads # in your action at runtime. For automatic handling, use # Ramaze::Helper::Upload::ClassMethods#handle_all_uploads or # Ramaze::Helper::Upload::ClassMethods#handle_uploads_for instead. # # @author Lars Olsson # @since 04-08-2011 # @param [Regexp] pattern If set, only those request parameters which # has a name matching the Regexp will be checked for file uploads. # @return [Array] The uploaded files. # @see Ramaze::Helper::Upload::ClassMethods#handle_all_uploads # @see Ramaze::Helper::Upload::ClassMethods#handle_uploads_for # def get_uploaded_files(pattern = nil) uploaded_files = {} # Iterate over all request parameters request.params.each_pair do |k, v| # If we use a pattern, check that it matches if pattern.nil? or pattern =~ k # Rack supports request parameters with either a single value or # an array of values. To support both, we need to check if the # current parameter is an array or not. if v.is_a?(Array) # Got an array. Iterate through it and check for uploaded files file_indices = [] v.each_with_index do |elem, idx| file_indices.push(idx) if is_uploaded_file?(elem) end # Convert found uploaded files to # Ramaze::Helper::Upload::UploadedFile objects file_elems = [] file_indices.each do |fi| file_elems << Ramaze::Helper::Upload::UploadedFile.new( v[fi][:filename], v[fi][:type], v[fi][:tempfile], ancestral_trait[:upload_options] || Ramaze::Helper::Upload::ClassMethods.trait[ :default_upload_options ] ) end # Remove uploaded files from current request param file_indices.reverse_each do |fi| v.delete_at(fi) end # If the request parameter contained at least one file upload, # add upload(s) to the list of uploaded files uploaded_files[k] = file_elems unless file_elems.empty? # Delete parameter from request parameter array if it doesn't # contain any other elements. request.params.delete(k) if v.empty? else # Got a single value. Check if it is an uploaded file if is_uploaded_file?(v) # The current parameter represents an uploaded file. # Convert the parameter to a # Ramaze::Helper::Upload::UploadedFile object uploaded_files[k] = Ramaze::Helper::Upload::UploadedFile.new( v[:filename], v[:type], v[:tempfile], ancestral_trait[:upload_options] || Ramaze::Helper::Upload::ClassMethods.trait[ :default_upload_options ] ) # Delete parameter from request parameter array request.params.delete(k) end end end end # If at least one file upload matched, override the uploaded_files # method with a singleton method that returns the list of uploaded # files. Doing things this way allows us to store the list of uploaded # files without using an instance variable. unless uploaded_files.empty? @_ramaze_uploaded_files = uploaded_files # Save uploaded files if autosave is set to true if ancestral_trait[:upload_options] and ancestral_trait[:upload_options][:autosave] uploaded_files().each_value do |uf| uf.save end end end # The () is required, otherwise the name would collide with the variable # "uploaded_files". return uploaded_files() end ## # Adds some class method to the controller whenever the helper # is included. # def self.included(mod) mod.extend(ClassMethods) end ## # Returns list of currently handled file uploads. # # Both single and array parameters are supported. If you give # your file upload fields the same name (for instance upload[]) Rack will # merge them into a single parameter. The upload helper will keep this # structure so that whenever the request parameter contains an array, the # uploaded_files method will also return an array of # Ramaze::Helper::Upload::UploadedFile objects for the same key. # # @return [Hash] Currently uploaded files. The keys in the hash # corresponds to the names of the request parameters that contained file # uploads and the values consist of Ramaze::Helper::Upload::UploadedFile # objects. # def uploaded_files return @_ramaze_uploaded_files || {} end private # Returns whether +param+ is considered an uploaded file # A parameter is considered to be an uploaded file if it is # a hash and contains all parameters that Rack assigns to an # uploaded file # # @param [Hash] param A request parameter # @return [Boolean] def is_uploaded_file?(param) if param.respond_to?(:has_key?) [:filename, :type, :name, :tempfile, :head].each do |k| return false if !param.has_key?(k) end return true else return false end end # Helper class methods. Methods in this module will be available # in your controller *class* (not your controller instance). module ClassMethods include Ramaze::Traited # Default options for uploaded files. You can change these options # by using the uploads_options method trait :default_upload_options => { :allow_overwrite => false, :autosave => false, :default_upload_dir => nil, :unlink_tempfile => false }.freeze ## # This method will activate automatic handling of uploaded files # for specified actions in the controller. # # @example # class MyController < Ramaze::Controller # # # Use upload helper # helper :upload # # # Handle all uploads for the foo and bar actions # handle_uploads_for :foo, :bar # # # Handle all uploads for the baz action and uploads beginning with # # 'up' for the qux action # handle_uploads_for :baz, [:qux, /^up.*/] # end # # @param [Array] args An arbitrary long list of arguments with action # names (and optionally patterns) that should handle file uploads # automatically. Each argument can either be a symbol or a two-element # array consisting of a symbol and a reqexp. # @see #handle_all_uploads # @see Ramaze::Helper::Upload#get_uploaded_files def handle_uploads_for(*args) args.each do |arg| if arg.respond_to?(:first) and arg.respond_to?(:last) before(arg.first.to_sym) do get_uploaded_files(arg.last) end else before(arg.to_sym) do get_uploaded_files end end end end ## # Sets options for file uploads in the controller. # # @example # # This controller will handle all file uploads automatically. # # All uploaded files are saved automatically in '/uploads/myapp' # # and old files are overwritten. # # # class MyController < Ramaze::Controller # # # Use upload helper # helper :upload # # handle_all_uploads # upload_options :allow_overwrite => true, # :autosave => true, # :default_upload_dir => '/uploads/myapp', # :unlink_tempfile => true # end # # # This controller will handle all file uploads automatically. # # All uploaded files are saved automatically, but the exact location # # is depending on a session variable. Old files are overwritten. # # # class MyController2 < Ramaze::Controller # # # Use upload helper # helper :upload # # # Proc to use for save directory calculation # calculate_dir = lambda { File.join('/uploads', session['user']) } # # handle_all_uploads # upload_options :allow_overwrite => true, # :autosave => true, # :default_upload_dir => calculate_dir, # :unlink_tempfile => true # end # @param [Hash] options Options controlling how file uploads # are handled. # @option options [Boolean] :allow_overwrite If set to *true*, uploaded # files are allowed to overwrite existing ones. This option is set to # *false* by default. # @option options [Boolean] :autosave If set to *true*, # Ramaze::Helper::Upload::UploadedFile#save will be called on all # matched file uploads # automatically. You can use this option to automatically save files # at a preset location, but please note that you will need to set the # :default_upload_dir (and possibly :allow_overwrite) options as well # in order for this to work correctly. This option is set to *false* # by default. # @option options [String|Proc] :default_upload_dir If set to a string # (representing a path in the file system) this option will allow you # to save uploaded files without specifying a path. If you intend to # call Ramaze::Helper::Upload::UploadedFile#save with a path you don't # need to set this option at all. If you need to delay the calculation # of the directory, you can also set this option to a proc. The proc # should accept zero arguments and return a string. This comes in handy # when you want to use different directory paths for different users # etc. This option is set to *nil* by default. # @option options [Boolean] :unlink_tempfile If set to *true*, this # option will automatically unlink the temporary file created by Rack # immediately after Ramaze::Helper::Upload::UploadedFile#save is done # saving the uploaded file. This is probably not needed in most cases, # but if you don't want to expose your uploaded files in a shared # tempdir longer than necessary this option might be for you. This # option is set to *false* by default. # @see Ramaze::Helper::Upload::UploadedFile#initialize # @see Ramaze::Helper::Upload::UploadedFile#save # def upload_options(options) trait( :upload_options => Ramaze::Helper::Upload::ClassMethods.trait[ :default_upload_options ].merge(options) ) end end # ClassMethods ## # This class represents an uploaded file. # # @author Lars Olsson # @since 18-08-2011 # class UploadedFile include Ramaze::Traited # Suggested file name # @return [String] attr_reader :filename # MIME-type # @return [String] attr_reader :type ## # Initializes a new Ramaze::Helper::Upload::UploadedFile object. # # @param [String] filename Suggested file name # @param [String] type MIME-type # @param [File] tempfile temporary file # @param [Hash] options Options for uploaded files. Options supported # match those available to # Ramaze::Helper::Upload::ClassMethods#upload_options # @return [Ramaze::Helper::Upload::UploadedFile] A new # Ramaze::Helper::Upload::UploadedFile object # @see #save # @see Ramaze::Helper::Upload::ClassMethods#upload_options def initialize(filename, type, tempfile, options) @filename = File.basename(filename) @type = type @tempfile = tempfile @realfile = nil trait :options => options end ## # Changes the suggested filename of this # Ramaze::Helper::Upload::UploadedFile. +name+ should be a string # representing the filename (only the filename, not a complete path), # but if you provide a complete path this method it will try to identify # the filename and use that instead. # # @param [String] name The new suggested filename. # def filename=(name) @filename = File.basename(name) end ## # Returns the path of the Ramaze::Helper::Upload::UploadedFile object. # The method will always return *nil* before *save* has been called # on the Ramaze::Helper::Upload::UploadedFile object. # # @return [String|nil] # def path return self.saved? ? @realfile.path : nil end ## # Saves the Ramaze::Helper::Upload::UploadedFile. # # If +path+ is not set, the method checks whether there exists default # options for the path and tries to use that instead. # # If you need to override any options set in the controller (using # upload_options) you can set the corresponding option in +options+ to # override the behavior for this particular # Ramaze::Helper::Upload::UploadedFile object. # # @param [String] path Path where the # Ramaze::Helper::Upload::UploadedFile will be saved # @param [Hash] options Options for uploaded files. Options supported # match those available to # Ramaze::Helper::Upload::ClassMethods#upload_options # @raise [StandardError] Will be raised if the save operation fails. # @see #initialize # @see Ramaze::Helper::Upload::ClassMethods#upload_options # def save(path = nil, options = {}) # Merge options opts = trait[:options].merge(options) unless path # No path was provided, use info stored elsewhere to try to build # the path unless opts[:default_upload_dir] raise StandardError.new('Unable to save file, no dirname given') end unless @filename raise StandardError.new('Unable to save file, no filename given') end # Check to see if a proc or a string was used for the # default_upload_dir parameter. If it was a proc, call the proc and # use the result as the directory part of the path. If a string was # used, use the string directly as the directory part of the path. dn = opts[:default_upload_dir] if dn.respond_to?(:call) dn = dn.call end path = File.join(dn, @filename) end path = File.expand_path(path) # Abort if file altready exists and overwrites are not allowed if File.exists?(path) and !opts[:allow_overwrite] raise StandardError.new('Unable to overwrite existing file') end # Confirm that we can read source file unless File.readable?(@tempfile.path) raise StandardError.new('Unable to read temporary file') end # Confirm that we can write to the destination file unless (File.exists?(path) and File.writable?(path)) \ or (File.exists?(File.dirname(path)) \ and File.writable?(File.dirname(path))) raise StandardError.new( "Unable to save file to #{path}. Path is not writable" ) end # If supported, use IO,copy_stream. If not, require fileutils # and use the same method from there if IO.respond_to?(:copy_stream) IO.copy_stream(@tempfile, path) else require 'fileutils' File.open(@tempfile.path, 'rb') do |src| File.open(path, 'wb') do |dest| FileUtils.copy_stream(src, dest) end end end # Update the realfile property, indicating that the file has been # saved @realfile = File.new(path) # But no need to keep it open @realfile.close # If the unlink_tempfile option is set to true, delete the temporary # file created by Rack unlink_tempfile if opts[:unlink_tempfile] end ## # Returns whether the Ramaze::Helper::Upload::UploadedFile has been # saved or not. # # @return [Boolean] # def saved? return !@realfile.nil? end ## # Deletes the temporary file associated with this # Ramaze::Helper::Upload::UploadedFile immediately. # def unlink_tempfile File.unlink(@tempfile.path) @tempfile = nil end end # UploadedFile end # Upload end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/gestalt.rb0000644000004100000410000000260612140566653020726 0ustar www-datawww-datarequire 'ramaze/gestalt' module Ramaze module Helper # Gestalt is the custom HTML/XML builder for Ramaze, based on a very simple # DSL it will build your markup. module Gestalt CACHE_G = {} def gestalt(&block) Ramaze::Gestalt.new(&block) end def build(&block) Ramaze::Gestalt.build(&block) end def g(meth = nil, view = nil) meth ||= caller[0].slice(/`(.*)'?/).gsub(/[\`\']/, '') view_name = (self.class.to_s.sub('Controller', '') + 'View').split('::') view ||= view_name.inject(Object){ |ns, name| ns.const_get(name) } gestalt_class = CACHE_G[view] ||= g_class gestalt = gestalt_class.new gestalt.extend(view) instance_variables.each do |iv| gestalt.instance_variable_set(iv, instance_variable_get(iv)) end gestalt.__send__(meth) gestalt.to_s end def g_class ancs = self.class.ancestors helpers = Ramaze::Helper.constants.map{ |c| Ramaze::Helper.const_get(c)} our_helpers = ancs & helpers our_helpers.delete(Ramaze::Helper::Gestalt) gestalt_class = Class.new(Ramaze::Gestalt){ include(*our_helpers) } end def method_missing(sym, *args, &block) @gestalt ||= gestalt @gestalt.send(sym, *args, &block) end end end end module Ramaze::Helper::Link; undef :a end ramaze-2012.12.08/lib/ramaze/helper/csrf.rb0000644000004100000410000001472012140566653020220 0ustar www-datawww-datarequire 'securerandom' require 'digest' module Ramaze module Helper ## # A relatively basic yet useful helper that can be used to protect your # application from CSRF attacks/exploits. Note that this helper merely # generates the required data, and provides several methods. You still need # to manually add the token to each form. # # The reason for this is because this is quite simple. Ramaze is meant as a # framework that works with any given helper, ORM, template engine and so # on. If we were to automatically load this helper and include (a perhaps # more advanced) CSRF system that would mean that every form helper, # official or third-party, would have to support that specific system. # However, there's no need to panic as it's very easy to setup a basic anti # CSRF system. # # ## Usage # # In order to enable CSRF protection we need to do two things. Load the # helper and create a before_all block in a controller. Take a look at the # following code: # # class BaseController < Ramaze::Controller # before_all do # puts "Hello, before_all!" # end # end # # This would output "Hello, before_all!" to the console upon each request. # Not very useful but it does show what the before_all block can do. On to # actual CSRF related code! # # class BaseController < Ramaze::Controller # before_all do # csrf_protection :save do # # .... # end # end # end # # This example introduces an extra block that validates the current # request. Whenever a user requests a controller that either extends # BaseController or has it's own before_all block Ramaze will check if the # current request data contains a CSRF token. Of course an if/end isn't # very useful if it doesn't do anything, let's add some code. # # class BaseController < Ramaze::Controller # before_all do # csrf_protection :save do # puts "Hello, unsafe data!" # end # end # end # # The code above checks if the current method is "save" (or any other of # the provided methods) and checks if an CSRF token is supplied if the # method matches. Protected methods require a token in ALL HTTP requests # (GET, POST, etc). While this may seem weird since GET is generally used # for safe actions it actually makes sense. Ramaze stores both the POST and # GET parameters in the request.params hash. While this makes it easy to # work with POST/GET data this also makes it easier to spoof POST requests # using a GET request, thus this helper protects ALL request methods. # # If you're a lazy person you can copy-paste the example below and adapt it # to your needs. # # class BaseController < Ramaze::Controller # before_all do # csrf_protection :save do # respond("The supplied CSRF token is invalid.", 401) # end # end # end # module CSRF include Innate::Optioned options.dsl do o 'The name of the token field', :field_name, 'csrf_token' end ## # Method that can be used to protect the specified methods against CSRF # exploits. Each protected method will require the token to be stored in # a field called "csrf_token". This method will then validate that token # against the current token in the session. # # @param [Array] methods Array of method names that should be checked. # @param [Proc] block Block that will be executed if the token is # invalid. # @example # # Protect "create" and "save" against CSRF exploits # before_all do # csrf_protection :create, :save do # respond("GET TO DA CHOPPA!", 401) # end # end # def csrf_protection(*methods, &block) if methods.include?(action.name) \ or methods.include?(action.name.to_sym) unless validate_csrf_token(request.params[CSRF.options.field_name]) yield end end end ## # Generate a new token and create the session array that will be used to # validate the client. # # Note that this method will be automatically called if no CSRF token # exists. # # @param [Hash] args Additional arguments that can be set such as the # TTL. # def generate_csrf_token(args = {}) random = SecureRandom.random_bytes(512) time = Time.now.to_f token = Digest::SHA512.hexdigest(random + time.to_s) # Time to store all the data we want to check later. session[:_csrf] = { :token => token, :ip => request.ip, :agent => request.env['HTTP_USER_AGENT'], :host => request.host } return end ## # Retrieves the current value of the CSRF token. # # @return [String] The current CSRF token. # @example # form(@data, :method => :post) do |f| # f.input_hidden :csrf_token, get_csrf_token() # end # def get_csrf_token if !session[:_csrf] || !self.validate_csrf_token(session[:_csrf][:token]) self.generate_csrf_token end return session[:_csrf][:token] end ## # Validates the request based on the current session date stored in # _csrf. # # @param [String] input_token The CSRF token to validate. # @return [TrueClass|FalseClass] # @example # before_all do # if validate_csrf_token(request.params['csrf_token']) != true # respond("Invalid CSRF token", 401) # end # end # def validate_csrf_token(input_token) # Check if the CSRF data has been generated and generate it if this # hasn't been done already (usually on the first request). if !session[:_csrf] or session[:_csrf].empty? self.generate_csrf_token end _csrf = session[:_csrf] valid = session[:_csrf][:token] == input_token && _csrf[:host] == request.host && _csrf[:ip] == request.ip && _csrf[:agent] == request.env['HTTP_USER_AGENT'] if valid generate_csrf_token return true else return false end end end # CSRF end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/email.rb0000644000004100000410000001011212140566653020341 0ustar www-datawww-datarequire 'net/smtp' module Ramaze module Helper ## # The Email helper can be used as a simple way of sending Emails from your # application. In order to use this helper you first need to load it: # # class Comments < Ramaze::Controller # helper :email # end # # Sending an Email can be done by calling the method send_email(): # # send_email( # 'user@domain.tld', # 'Hello, world!', # 'Hello, this is an Email' # ) # # Ramaze will log any errors in case the Email could not be sent so you # don't have to worry about this. # # ## Options # # This module can be configured using Innate::Optioned. Say you want to # change the SMTP host you simply need to do the following: # # Ramaze::Helper::Email.options.host = 'mail.google.com' # # Various other options are available, for a full list of these options run # the following in an IRB session: # # puts Ramaze::Helper::Email.options # # By default this helper uses ``\r\n`` for newlines, this can be changed as # following: # # Ramaze::Helper::Email.options.newline = "\n" # # @author Yorick Peterse # @author Michael Fellinger # @since 16-06-2011 # module Email include Innate::Optioned options.dsl do o 'The SMTP server to use for sending Emails' , :host , '' o 'The SMTP helo domain' , :helo_domain , '' o 'The username for the SMTP server' , :username , '' o 'The password for the SMTP server' , :password , '' o 'The sender\'s Email address' , :sender , '' o 'The port of the SMTP server' , :port , 25 o 'The authentication type of the SMTP server' , :auth_type , :login o 'An array of addresses to forward the Emails to', :bcc , [] o 'The name (including the Email) of the sender' , :sender_full , nil o 'A prefix to use for the subjects of the Emails', :subject_prefix, '' o 'The type of newlines to use for the Email' , :newline , "\r\n" o 'The generator to use for Email IDs' , :generator , lambda { "<" + Time.now.to_i.to_s + "@" + Ramaze::Helper::Email.options.helo_domain + ">" } end ## # Sends an Email over SMTP. # # @example # send_email('user@domain.tld', 'Hello, world!', 'Hello, this is an Email') # # @author Yorick Peterse # @author Michael Fellinger # @since 16-06-2011 # @param [String] recipient The Email address to send the Email to. # @param [String] subject The subject of the Email. # @param [String] message The body of the Email # def send_email(recipient, subject, message) sender = Email.options.sender_full || "#{Email.options.sender} <#{Email.options.sender}>" subject = [Email.options.subject_prefix, subject].join(' ').strip id = Email.options.generator.call # Generate the body of the Email email = [ "From: #{sender}", "To: <#{recipient}>", "Date: #{Time.now.rfc2822}", "Subject: #{subject}", "Message-Id: #{id}", '', message ].join(Email.options.newline) # Send the Email email_options = [] [:host, :port, :helo_domain, :username, :password, :auth_type].each do |k| email_options.push(Email.options[k]) end begin Net::SMTP.start(*email_options) do |smtp| smtp.send_message( email, Email.options.sender, [recipient, *Email.options.bcc] ) Ramaze::Log.info( "Email sent to #{recipient} with subject \"#{subject}\"" ) end rescue => e Ramaze::Log.error( "Failed to send an Email to #{recipient}: #{e.inspect}" ) end end end # Email end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/maruku.rb0000644000004100000410000000061312140566653020563 0ustar www-datawww-datarequire 'maruku' module Ramaze module Helper module Maruku # Shortcut to generate HTML from Markdown code using Maruku # # @param [#to_str] text the markdown to be converted # @return [String] html generated from +text+ # @author manveru def maruku(text) ::Maruku.new(text.to_str).to_html end end # Maruku end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/formatting.rb0000644000004100000410000001617612140566653021444 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module Helper module Formatting module_function FORMATTING_NUMBER_COUNTER = { 0 => 'no', 2 => 'two', 3 => 'three', 4 => 'four', 5 => 'five', 6 => 'six', 7 => 'seven', 8 => 'eight', 9 => 'nine', 10 => 'ten' } # Answers with a representation of given +count+ with correct grammar. If # no +items+ argument is given, and the +count+ argument is not 1, then we # first check whether the +item+ argument responds to ``#pluralize`` (for # example if you are using Sequel). If this doesn't work we append 's' # to the +item+ argument. # # @example usage # number_counter(0, 'comment') # => 'no comments' # number_counter(1, 'comment') # => 'one comment' # number_counter(2, 'comment') # => '2 comments' # def number_counter(count, item, items = nil) count, item = count.to_i, item.to_s if count == 1 "one #{item}" else items ||= item.respond_to?(:pluralize) ? item.pluralize : "#{item}s" prefix = FORMATTING_NUMBER_COUNTER[count] || count "#{prefix} #{items}" end end # Format a floating number nicely for display. # # @example # number_format(123.123) # => '123.123' # number_format(123456.12345) # => '123,456.12345' # number_format(123456.12345, '.') # => '123.456,12345' # def number_format(n, delimiter = ',') delim_l, delim_r = delimiter == ',' ? %w[, .] : %w[. ,] h, r = n.to_s.split('.') [h.reverse.scan(/\d{1,3}/).join(delim_l).reverse, r].compact.join(delim_r) end # Answer with the ordinal version of a number. # # @example # ordinal(1) # => "1st" # ordinal(2) # => "2nd" # ordinal(3) # => "3rd" # ordinal(13) # => "13th" # ordinal(33) # => "33rd" # ordinal(100) # => "100th" # ordinal(133) # => "133rd" # def ordinal(number) number = number.to_i case number % 100 when 11..13; "#{number}th" else case number % 10 when 1; "#{number}st" when 2; "#{number}nd" when 3; "#{number}rd" else "#{number}th" end end end # stolen and adapted from rails def time_diff(from_time, to_time = Time.now, include_seconds = false) distance_in_minutes = (((to_time - from_time).abs)/60).round distance_in_seconds = ((to_time - from_time).abs).round if include_seconds case distance_in_minutes when 0..1 return (distance_in_minutes == 0) ? 'less than a minute' : '1 minute' unless include_seconds case distance_in_seconds when 0..4 then 'less than 5 seconds' when 5..9 then 'less than 10 seconds' when 10..19 then 'less than 20 seconds' when 20..39 then 'half a minute' when 40..59 then 'less than a minute' else '1 minute' end when 2..44 then "#{distance_in_minutes} minutes" when 45..89 then 'about 1 hour' when 90..1439 then "about #{(distance_in_minutes.to_f / 60.0).round} hours" when 1440..2879 then '1 day' when 2880..43199 then "#{(distance_in_minutes / 1440).round} days" when 43200..86399 then 'about 1 month' when 86400..525959 then "#{(distance_in_minutes / 43200).round} months" when 525960..1051919 then 'about 1 year' else "over #{(distance_in_minutes / 525960).round} years" end end # Copied from actionpack, and revised by insane-dreamer to fix a bug # (original fails on some URLs) AUTO_LINK_RE = %r{ ( # leading text <\w+.*?>| # leading HTML tag, or [^=!:'"/]| # leading punctuation, or ^ # beginning of line ) ( (?:https?://)| # protocol spec, or (?:www\.) # www.* ) ( [-\w]+ # subdomain or domain (?:\.[-\w]+)* # remaining subdomains or domain (?::\d+)? # port (?:/(?:[~\w\+@%=\(\)-]|(?:[,.;:'][^\s<$]))*)* # path (?:\?[\w\+@%&=.;:-]+)? # query string (?:\#[\w\-]*)? # trailing anchor ) ([[:punct:]]|<|$|) # trailing text }x unless defined? AUTO_LINK_RE # Turns all urls into clickable links. If a block is given, each url # is yielded and the result is used as the link text. def auto_link(text, opts = {}) html_options = ' ' + opts.map{|k,v| "#{k}='#{v}'"}.join(' ') if opts.any? text.gsub(AUTO_LINK_RE) do all, a, b, c, d = $&, $1, $2, $3, $4 if a =~ /#{text}#{d}) end end end alias autolink auto_link # takes a string and optional argument for outputting compliance HTML # instead of XHTML. # # @example # nl2br "a\nb\n\c" #=> 'a
b
c' # def nl2br(string, xhtml = true) br = xhtml ? '
' : '
' string.gsub(/\n/, br) end def obfuscate_email(email, text = nil) obfuscated = [] email.to_s.each_byte{|c| obfuscated << "&#%03d" % c } joined = obfuscated.join %(#{text || joined}) end # Returns Hash with tags as keys and their weight as value. # # Example: # tags = %w[ruby ruby code ramaze] # tagcloud(tags) # # => {"code"=>0.75, "ramaze"=>0.75, "ruby"=>1.0} # # The weight can be influenced by adjusting the +min+ and +max+ # parameters, please make sure that +max+ is larger than +min+ to get # meaningful output. # # This is not thought as immediate output to your template but rather to # help either implementing your own algorithm or using the result as input # for your tagcloud. # # @example # tagcloud(tags).each do |tag, weight| # style = "font-size: %0.2fem" % weight # %a{:style => style, :href => Rs(tag)}= h(tag) # end # def tagcloud(tags, min = 0.5, max = 1.5) result = {} total = tags.size.to_f diff = max - min tags.uniq.each do |tag| count = tags.respond_to?(:count) ? tags.count(tag) : tags.select{|t| t==tag }.size result[tag] = ((count / total) * diff) + min end result end end # Formatting end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/paginate.rb0000644000004100000410000002363512140566653021060 0ustar www-datawww-datarequire 'ramaze/gestalt' module Ramaze module Helper # Helper for pagination and pagination-navigation. # # See {Ramaze::Helper::Paginate#paginate} for more information. # module Paginate include Traited # Define default options in your Controller, they are being retrieved by # ancestral_trait, so you can also put it into a common superclass trait :paginate => { :limit => 10, :var => 'pager', :css => { :first => 'first', :prev => 'prev', :next => 'next', :last => 'last', :current => 'current', :number => '', :disabled => 'grey' } } ## # Returns a new Paginator instance. # # Note that the pagination relies on being inside a Ramaze request to # gain necessary metadata about the page it resides on, you cannot use it # outside of Ramaze yet. # # The examples below are meant to be used within your controller or view. # # Usage with Array: # # data = (1..100).to_a # @pager = paginate(data, :limit => 30, :page => 2) # @pager.navigation # @pager.each{|e| puts(e) } # # Usage with Sequel: # # data = Article.filter(:public => true) # @pager = paginate(data, :limit => 5) # @pager.navigation # @pager.each{|e| puts(e) # # Note that you must first extend Sequel with the pagination extension" # # Sequel.extension :pagination # # Customizing the classes to use for the various HTML elements of the # page list can be done by passing a key ``:css`` to the list of options. # In this hash you can set the following keys: # # * first, defaults to "first" # * prev, defaults to "prev" # * next, defaults to "next" # * last, defaults to "last" # * current, defaults to "current" # * number, empty by default # * disabled, defaults to "grey" # # These options can also be specified globally in the trait ``:paginate`` # as following: # # class Posts < Ramaze::Controller # map '/' # # trait :paginate => { # :limit => 10, # :var => 'page', # :css => { # :first => 'first_item', # :prev => 'prev_item', # # and so on. # } # } # end # # @param [Sequel::Dataset|Array] dataset May be a Sequel dataset or an # Array # @param [Hash] options A hash containing custom options that takes # precedence to ``trait[:paginate]. # @option options [Fixnum] :limit The number of elements used when you # call #each on the paginator # @option options [String] :var The variable name being used in the # request, this is helpful if you want to use two or more independent # paginations on the same page. # @option options [Fixnum] :page The page you are currently on, if not # given it will be retrieved from current request variables. Defaults to # 1 if neither exists. # @option options [Hash] :css A hash containing various options that can # be used to customize the HTML classes to use for the various page # links. # def paginate(dataset, options = {}) options = ancestral_trait[:paginate].merge(options) limit = options[:limit] var = options[:var] page = options[:page] || (request[var] || 1).to_i opts = {} opts.merge!({:css => options[:css]}) if options[:css] Paginator.new(dataset, page, limit, var, opts) end # Provides easy pagination and navigation class Paginator include Ramaze::Helper helper :link, :cgi attr_reader :css def initialize(data = [], page = 1, limit = 10, var = 'pager', opts = {}) @data, @page, @limit, @var = data, page, limit, var @css = Paginate.trait[:paginate][:css].dup @css.merge!(opts[:css]) if opts[:css] @pager = pager_for(data) @page = @page > page_count ? page_count : @page @pager = pager_for(data) end ## # Returns String with navigation div. # # This cannot be customized very nicely, but you can style it easily # with CSS. # # Output with 5 elements, page 1, limit 3: # #
# << # < # 1 # 2 # # >> #
# # Output with 5 elements, page 2, limit 3: # #
# << # # 1 # 2 # > # >> #
# def navigation(limit = 8) g = Ramaze::Gestalt.new g.div :class => :pager do if first_page? g.span(:class => "#{@css[:first]} #{@css[:disabled]}"){ h('<<') } g.span(:class => "#{@css[:prev]} #{@css[:disabled]}"){ h('<') } else link(g, 1, '<<', :class => @css[:first]) link(g, prev_page, '<', :class => @css[:prev]) end lower = limit ? (current_page - limit) : 1 lower = lower < 1 ? 1 : lower (lower...current_page).each do |n| link(g, n, n, :class => @css[:number]) end link(g, current_page, current_page, :class => "#{@css[:current]} #{@css[:number]}" ) if last_page? g.span(:class => "#{@css[:next]} #{@css[:disabled]}"){ h('>') } g.span(:class => "#{@css[:last]} #{@css[:disabled]}"){ h('>>') } elsif next_page higher = limit ? (next_page + limit) : page_count higher = [higher, page_count].min (next_page..higher).each do |n| link(g, n, n, :class => @css[:number]) end link(g, next_page, '>', :class => @css[:next]) link(g, page_count, '>>', :class => @css[:last]) end end g.to_s end # Useful to omit pager if it's of no use. def needed? @pager.page_count > 1 end # these methods are actually on the pager, but we def them here for # convenience (method_missing in helper is evil and even slower) def page_count ; @pager.page_count ; end def each(&block); @pager.each(&block); end def first_page? ; @pager.first_page? ; end def prev_page ; @pager.prev_page ; end def current_page; @pager.current_page; end def last_page ; @pager.last_page ; end def last_page? ; @pager.last_page? ; end def next_page ; @pager.next_page ; end def empty? ; @pager.empty? ; end def count ; @pager.count ; end private def pager_for(obj) @page = @page < 1 ? 1 : @page case obj when Array ArrayPager.new(obj, @page, @limit) when (defined?(DataMapper::Collection) and DataMapper::Collection) DataMapperPager.new(obj, @page, @limit) else obj.paginate(@page, @limit) end end def link(g, n, text = n, hash = {}) text = h(text.to_s) action = Current.action params = request.params.merge(@var.to_s => n) hash[:href] = action.node.r(action.path, params) g.a(hash){ text } end # Wrapper for Array to behave like the Sequel pagination class ArrayPager def initialize(array, page, limit) @array, @page, @limit = array, page, limit @page = page_count if @page > page_count end def size @array.size end def empty? @array.empty? end def page_count pages, rest = size.divmod(@limit) rest == 0 ? pages : pages + 1 end def current_page @page end def next_page page_count == @page ? nil : @page + 1 end def prev_page @page <= 1 ? nil : @page - 1 end def first_page? @page <= 1 end def last_page? page_count == @page end def each(&block) from = ((@page - 1) * @limit) to = from + @limit a = @array[from...to] || [] a.each(&block) end include Enumerable end # Wrapper for DataMapper::Collection to behave like the Sequel # pagination. # needs 'datamapper' (or 'dm-core' and 'dm-aggregates') class DataMapperPager < ArrayPager def initialize(*args) unless defined?(DataMapper::Aggregates) Ramaze::Log.warn "paginate.rb: it is strongly " + "recommended to require 'dm-aggregates'" end super end def size @cached_size ||= @array.count end def empty? size == 0 end end # DataMapperPager end # Paginator end # Paginate end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/bench.rb0000644000004100000410000000321712140566653020341 0ustar www-datawww-datarequire 'benchmark' module Ramaze module Helper ## # The Benchmark helper is a simple helper that can be used to benchmark # certain blocks of code by wrapping them in a block. This can be useful if # you want to see how long a certain query takes or how long it takes to # create a new user. # module Bench ## # Will first run an empty loop to determine the overhead it imposes, then # goes on to yield your block +iterations+ times. # # The last yielded return value will be returned upon completion of the # benchmark and the result of the benchmark itself will be sent to # Log.info # # Example: # # class MainController < Ramaze::Controller # def index # @users = bench{ User.all } # @tags = bench{ Article.tags } # end # end # # This will show something like following in your log: # # [..] INFO Bench ./start.rb:3:in `index': 0.121163845062256 # [..] INFO Bench ./start.rb:4:in `index': 2.234987235098341 # # So now we know that the Article.tags call takes the most time and # should be improved. # # @param [Fixnum] iterations The amount of iterations to run. # @return [Mixed] # def bench(iterations = 1) result = nil from = caller[0] delta = Benchmark.realtime{ iterations.times{ nil }} taken = Benchmark.realtime{ iterations.times{ result = yield }} Log.info "Bench #{from}: #{taken - delta}" return result end end # Bench end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/layout.rb0000644000004100000410000001150412140566653020575 0ustar www-datawww-datamodule Ramaze module Helper ## # Provides wrapper methods for a higher-level approach than the core layout # method. The layout() method that comes with Innate/Ramaze is fairly basic # as it only allows you to specify a single layout to always use or a block # giving you some extra flexibility. The latter however is still a bit of a # pain when dealing with many custom layouts in a single controller. Meet # the Layout helper. This helper provides a single method (since April 2011, # it used to provide more) called "set_layout". This method allows you to # specify a number of layouts and the methods for which these layouts should # be used. # # ## Examples # # The most basic example is simply setting a layout as you would do with the # layout() method: # # set_layout 'default' # # This of course is very boring, time to add some more spices to our code: # # set_layout 'default' => [:index] # # Woah! What just happened? It's quite easy actually, we merely defined that # the layout called "default" should be used for the index method *only*. # Pretty sweet huh? It gets even better: # # set_layout 'default' => [:index, :edit], 'alternative' => [:add, :process] # # A few things changed. First of all there are now two key/value groups. # Each group defines a layout (the key) and a set of methods (the value) for # which each layout should be used. In this case the layout "default" will # be used for index() and edit() but the layout "alternative" will be used # for add() and process(). # # Last but not least, multiple calls to set_layout will no longer override # any existing settings *unless* you actually specify the same method with a # different layout. This is possible because the set_layout method stores # all these details in an instance variable called "_ramaze_layouts". # # @author Yorick Peterse # @author Michael Fellinger # @author Pistos # module Layout ## # Extends the class that included this module so that the methods that # this helper provides can be called outside of instance of class methods. # # @param [Object] into The class that included this module. # @author Michael Fellinger # @author Pistos # def self.included(into) into.extend SingletonMethods end module SingletonMethods ## # The set_layout method allows you to specify a number of methods and # their layout. This allows you to use layout A for methods 1, 2 and 3 # but layout B for method 4. # # @example # # The key is the layout, the value an array of methods # set_layout 'default' => [:method_1], 'alternative' => [:method_2] # # # We can combine this method with layout() # layout 'default' # set_layout 'alternative' => [:method_1] # # # This is also perfectly fine # set_layout 'default' # # @param [String, Symbol, #to_hash] hash_or_layout # In case it's a String or Symbol it will directly be used as the # layout. # When setting a Hash this hash should have it's keys set to the # layouts and it's values to an array of methods that use the # specific layout. For more information see the examples. # # @author Yorick Peterse # @author Michael Fellinger # @author Pistos # @since 2011-04-07 # def set_layout(hash_or_layout) @_ramaze_layouts ||= {} @_ramaze_old_layout ||= trait[:layout] # Extract the layout to use if hash_or_layout.respond_to?(:to_hash) # Invert the method/layout hash and save them so they don't get lost hash_or_layout.to_hash.each do |layout, layout_methods| layout_methods.each do |layout_method| @_ramaze_layouts[layout_method.to_s] = layout.to_s end end layout do |path, wish| path = path.to_s if @_ramaze_layouts.key?(path) use_layout = @_ramaze_layouts[path.to_s] # Use the old layout elsif @_ramaze_old_layout.respond_to?(:call) use_layout = @_ramaze_old_layout.call(path, wish) else use_layout = @_ramaze_old_layout end use_layout end else layout { |path| hash_or_layout } end end # @deprecated because it's not longer useful def set_layout_except(hash_or_layout) Ramaze.deprecated('set_layout_except', 'set_layout') end end # SingletonMethods end # Layout end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/cache.rb0000644000004100000410000000720312140566653020324 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module Helper ## # Caching of simple objects and whole action responses. # module Cache # Setup needed traits, add the singleton methods and add the caches used # by this helper. # # @param [Class] into Class that this Module is included into # @author manveru # def self.included(into) into.extend(SingletonMethods) into.add_action_wrapper(6.0, :cache_wrap) into.trait[:cache_action] ||= Set.new Ramaze::Cache.add(:action, :cache_helper_value) end ## # @param [Action] action The currently wrapped action # @yield The next block in wrap_action_call # @return [String] the response body # @see Innate::Node#wrap_action_call # @author manveru # def cache_wrap(action) cache = Innate::Cache.action ancestral_trait[:cache_action].each do |cache_action| temp = cache_action.dup block = temp.delete(:key) ttl = temp.delete(:ttl) if temp.all?{|key, value| action[key] == value } cache_key = action.full_path cache_key << "_#{action.instance.instance_eval(&block).to_s}" if block if cached = cache[cache_key] action.options[:content_type] = cached[:type] else cached = { :body => catch(:respond) { yield }, :type => response['Content-Type'] } if ttl cache.store(cache_key, cached, :ttl => ttl) else cache.store(cache_key, cached) end end return cached[:body] end end yield end ## # This method is used to access Ramaze::Cache.cache_helper_value. # It provides an easy way to cache long-running computations, gathering # external resources like RSS feeds or DB queries that are the same for # every user of an application. # This method changes behaviour if a block is passed, which can be used # to do lazy computation of the cached value conveniently when using a # custom TTL or longer expressions that don't fit on one line with ||=. # # @example to get the cache object directly # # count = cache_value[:count] ||= Article.count # # @example with block # # count = cache_value(:count){ Article.count } # count = cache_value(:count, :ttl => 60){ Article.count } # # @return [Object] The cache wrapper assigned for :cache_helper_value # @see Innate::Cache # @author manveru # def cache_value(key = nil, options = {}) cache = Ramaze::Cache.cache_helper_value if key and block_given? if found = cache[key] found else cache.store(key, yield, options) end else cache end end module SingletonMethods # This method allows you to cache whole actions. # # @example Basic usage # class Foo < Ramaze::Controller # helper :cache # cache_action :method => :bar # # def bar # rand # end # end # def cache_action(hash, &block) hash[:key] = block if block_given? hash[:method] = hash[:method].to_s trait[:cache_action] << hash end end end # Cache end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/auth.rb0000644000004100000410000000667312140566653020234 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module Helper ## # The Auth helper can be used for authentication without using a model. # This can be useful when working with very basic applications that don't # require database access. # # If you're looking for a way to do authentication using a model you should # take a look at Helper::User instead. # module Auth Helper::LOOKUP << self include Ramaze::Traited trait :auth_table => {} trait :auth_hashify => lambda { |pass| Digest::SHA1.hexdigest(pass) } trait :auth_post_only => false def self.included(into) into.helper(:stack) end ## # Log a user in based on the :username and :password key in the request # hash. # # @return [String] The login template in case the user's login data was # incorrect. # def login if trait[:auth_post_only] and !request.post? return auth_template end @username, password = request[:username, :password] answer(request.referer) if auth_login(@username, password) return auth_template end ## # Log the user out and redirect him back to the previous page. # def logout auth_logout redirect_referrer end private ## # Validate the user's session and redirect him/her to the login page in # case the user isn't logged in. # def login_required call(r(:login)) unless logged_in? end ## # Validate the user's session and return a boolean that indicates if the # user is logged in or not. # # @return [true false] Whether user is logged in right now # def logged_in? !!session[:logged_in] end ## # Try to log the user in based on the username and password. # This method is called by the login() method and shouldn't be called # directly. # # @param [String] user The users's username. # @param [String] pass The user's password. # def auth_login(user, pass) return unless user and pass return if user.empty? or pass.empty? return unless table = ancestral_trait[:auth_table] return unless hashify = ancestral_trait[:auth_hashify] if table.respond_to?(:to_sym) or table.respond_to?(:to_str) table = send(table) elsif table.respond_to?(:call) table = table.call end return unless table[user] == hashify.call(pass) session[:logged_in] = true session[:username] = user end ## # Remove the session items that specified that the user was logged in. # def auth_logout session.delete(:logged_in) session.delete(:username) end ## # Method that returns a small form that can be used for logging in. # # @return [String] The login form. def auth_template <<-TEMPLATE.strip!
  • Username:
  • Password:
TEMPLATE end end # Auth end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/link.rb0000644000004100000410000000365312140566653020223 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'innate/helper/link' module Ramaze module Helper # This is a modification of Innate::Helper::Link to respect the routing of # Ramaze # # NOTE: The A/R/Rs methods have been deprecated. module Link def route_location(klass) prefix = Ramaze.options.prefix location = Ramaze.to(klass) || Ramaze.to(klass.class) [prefix, location].join('/') end ## # Give it a path with character to split at and one to join the crumbs # with. It will generate a list of links that act as pointers to previous # pages on this path. # # @example usage # breadcrumbs('/path/to/somewhere') # # # results in this, newlines added for readability: # # path/ # to/ # somewhere # # Optionally a href prefix can be specified which generate link # names a above, but with the prefix prepended to the href path. # # @example usage # breadcrumbs('/path/to/somewhere', '/', '/', '/mycontroller/action') # # # results in this, newlines added for readability: # # path/ # to/ # somewhere # # @return [String] def breadcrumbs(path, split = '/', join = '/', href_prefix = '') atoms = path.split(split).reject{|a| a.empty?} crumbs = atoms.inject([]){|s,v| s << [s.last,v]} bread = crumbs.map do |a| href_path = href_prefix + a*'/' a(a[-1], href_path) end bread.join(join) end end # Link end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/xhtml.rb0000644000004100000410000000775412140566653020430 0ustar www-datawww-datamodule Ramaze module Helper # Provides shortcuts to the link/script tags. ## # The XHTML helper can be used for generating CSS and Javascript tags. # Generating a CSS tag can be done by calling the css() method: # # css 'reset', 'screen', :only => 'ie' # # This would result in a stylesheet named "reset.css" being loaded only when # the user is using Internet Explorer. # module XHTML LINK_TAG = '' SCRIPT_TAG = '' ## # Generate a CSS tag based on the name, media type and a hash containing # additional options. For example, if we want to load the stylesheet only # when the user is using Internet Explorer we would have to add a key # 'only' with a value of 'ie' to the hash. # # @param [String] name The name of the CSS file to load. # @param [String] media The media type for which the stylesheet should be # loaded. # @param [Hash] options A hash containing additional options for the # stylesheet tag. # @example # # A very basic example. # css 'reset' # # # Oh shiny, IE only # css 'reset', 'screen', :only => 'ie' # # @return [String] String containing the stylesheet tag. # def css(name, media = 'screen', options = {}) if media.respond_to?(:keys) options = media media = 'screen' end if only = options.delete(:only) and only.to_s == 'ie' "" else if name =~ /^http/ LINK_TAG % [name, media] else prefix = options[:prefix] || 'css' LINK_TAG % [ "#{Ramaze.options.prefix.chomp("/")}/#{prefix}/#{name}.css", media ] end end end ## # The css_for method can be used when you want to load multiple # stylesheets and don't want to call the css() method over and over # again. # # @example # # This is pretty basic # css_for 'reset', '960', 'style' # # # Loading multiple stylesheets with custom options # css_for ['reset', 'print'], ['960', 'print'] # # @see css() # @param [Array] args An array containing either the names of all # stylesheets to load or a collection of arrays of which each array # defines the name, media and additional parameters. # @return [String] # def css_for(*args) args.map{|arg| css(*arg) }.join("\n") end ## # Generates a Javascript tag that loads an external Javascript file. This # tag can't be used for loading inline Javascript files. # # @example # # Simple isn't it? # js 'jquery' # # # Let's change the directory to "some_other_directory" # js 'jquery', :prefix => 'some_other_directory' # # @param [String] name The name of the Javascript file that should be # loaded. # @param [Hash] options Hash that can contain a :prefix key that defines # the directory in which the JS file is located. By default this key is # set to "js". # @return [String] # def js(name, options={}) if name =~ /^http/ # consider it external full url SCRIPT_TAG % name else SCRIPT_TAG % "#{Ramaze.options.prefix.chomp("/")}/#{options[:prefix] || 'js'}/#{name}.js" end end ## # Generate multiple Javascript tags using the js() method. # # @example # # Pretty simple isn't it? # js_for 'jquery', 'application', 'jquery.gritter' # # @param [Array] args Array containing the Javascript files to load. # @return [String] # def js_for(*args) args.map{|arg| js(*arg) }.join("\n") end end # XHTML end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/gravatar.rb0000644000004100000410000000526712140566653021100 0ustar www-datawww-datamodule Ramaze module Helper # Helps you building Gravatar URIs from an email address. # # For more information about gravatars, please see: http://gravatar.com # # The implementation of the gravatar method changed significantly, it does # less hand-holding but is more flexible so you can simply put your own # helper on top. # # It might not know about all the secret parameters (like 'force'), if you # find out more of these please consider contributing a patch. module Gravatar # API to build gravatar URIs from an email address (or any other String). # # @example Simple usage # class Gravatars < Ramaze::Controller # helper :gravatar # # def index # %q( # Input your email address and I'll show you your Gravatar #
# # #
# # Your gravatar is: # # # ) # end # end # # @option opts [#to_s] :ext (nil) # append a filename extension for the image, like '.jpg' # # @option opts [#to_i] :size (80) # The size of the gravatar, square, so 80 is 80x80. # Allowed range is from 1 to 512. # # @option opts [#to_s] :rating ('g') # Only serve a gravatar if it has a content rating equal or below the # one specified. Ratings, in order are: 'g', 'pg', 'r', or 'x' # # @option opts [#to_s] :default (nil) # Fall back to default if the given +email+ doesn't have an gravatar; # may be an absolute url, 'identicon', 'monsterid', or 'wavatar' # # @option opts [true, false] :force (false) # Force use of the default avatar, useful if you want to use only # identicons or the like # # @param [#to_str] email # @return [URI] # @see http://en.gravatar.com/site/implement/url # @author manveru # def gravatar(email, opts = {}) uri = URI("http://www.gravatar.com/") ext = opts[:ext] uri.path = "/avatar/#{Digest::MD5.hexdigest(email.to_str)}#{ext}" query = {} query[:size] = opts[:size].to_i.to_s if opts.key?(:size) query[:rating] = opts[:rating].to_s if opts.key?(:rating) query[:default] = opts[:default].to_s if opts.key?(:default) query[:force] = '1' if opts[:force] uri.query = Rack::Utils.build_query(query) if query.any? uri end end # Gravatar end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/blue_form.rb0000644000004100000410000005671212140566653021244 0ustar www-datawww-datarequire 'ramaze' require 'ramaze/gestalt' module Ramaze module Helper ## # The BlueForm helper tries to be an even better way to build forms # programmatically. By using a simple block you can quickly create all the # required elements for your form. # # See {Ramaze::Helper::BlueForm::Form} for all the available methods. # # ## Form Data # # As stated earlier it's possible to pass an object to the form_for() # method. What kind of object this is, a database result object or an # OpenStruct object doesn't matter as long as the attributes can be accessed # outside of the object (this can be done using attr_readers). This makes it # extremely easy to directly pass a result object from your favourite ORM. # Example: # # @data = User[1] # # form_for(@data, :method => :post) do |f| # f.input_text 'Username', :username # end # # The object comes handy when you want to do server-side form validation: # if the form can not be validated, just send back the object with keys # containing what the user has filled. The fields will be populated with # these values, so the user doesn't have to retype everything. # # If you don't want to use an object you can simply set the first parameter # to nil. # # ## HTML Output # # The form helper uses Gestalt, Ramaze's custom HTML builder that works # somewhat like Erector. The output is very minimalistic, elements such as # legends and fieldsets have to be added manually. # # If you need to add elements not covered by Form methods (e.g. `
` # tags), you can access the form Gestalt instance with the g() method and # generate your tags like this : # # form_for(@result, :method => :post) do |f| # f.g.div(:class => "awesome") do # ... # end # end # # Each combination of a label and input element will be wrapped in # `

` tags. # # When using the form helper as a block in your templates it's important to # remember that the result is returned and not displayed in the browser # directly. When using Etanni this would result in something like the # following: # # #{form_for(@result, :method => :post) do |f| # f.input_text 'Text label', :textname, 'Chunky bacon!' # end} # # @example Creating a basic form # form_for(@data, :method => :post) do |f| # f.input_text 'Username', :username # end # # @example Adding custom elements inside a form # form_for(@result, :method => :post) do |f| # f.fieldset do # f.g.div(:class => "control-group") do # f.input_text 'Text label', :textname, { :placeholder => 'Chunky bacon!', # :class => :bigsize } # end # end # end # module BlueForm ## # The form method generates the basic structure of the form. It should be # called using a block and it's return value should be manually sent to # the browser (since it does not echo the value). # # @param [Object] form_values Object containing the values for each form # field. # @param [Hash] options Hash containing any additional form attributes # such as the method, action, enctype and so on. # @param [Block] block Block containing the elements of the form such as # password fields, textareas and so on. # def form_for(form_values, options = {}, &block) form = Form.new(form_values, options) form.build(form_errors, &block) form end ## # Manually add a new error to the form_errors key in the flash hash. The # first parameter is the name of the form field and the second parameter # is the custom message. # # @param [String] name The name of the form field to which the error # belongs. # @param [String] message The custom error message to show. # def form_error(name, message) if respond_to?(:flash) old = flash[:form_errors] || {} flash[:form_errors] = old.merge(name.to_s => message.to_s) else form_errors[name.to_s] = message.to_s end end ## # Returns the hash containing all existing errors and allows other methods # to set new errors by using this method as if it were a hash. # # @return [Array] All form errors. # def form_errors if respond_to?(:flash) flash[:form_errors] ||= {} else @form_errors ||= {} end end ## # Retrieve all the form errors for the specified model and add them to the # flash hash. # # @param [Object] obj An object of a model that contains form errors. # def form_errors_from_model(obj) if obj.respond_to?(:errors) obj.errors.each do |key, value| if value.respond_to?(:first) value = value.first end form_error(key.to_s, value % key) end end end ## # Main form class that contains all the required methods to generate form # specific tags, such as textareas and select boxes. Do note that this # class is not thread-safe so you should modify it only within one thread # of execution. # class Form attr_reader :g attr_reader :form_values ## # Constructor method that generates an instance of the Form class. # # @param [Object] form_values Object containing the values for each form # field. # @param [Hash] options A hash containing any additional form attributes. # @return [Object] An instance of the Form class. # def initialize(form_values, options) @form_values = form_values @form_args = options.dup @g = Gestalt.new end ## # Builds the form by generating the opening/closing tags and executing # the methods in the block. # # @param [Hash] form_errors Hash containing all form errors (if any). # def build(form_errors = {}) # Convert all the keys in form_errors to strings and # retrieve the correct values in case @form_errors = {} form_errors.each do |key, value| if value.respond_to?(:first) value = value.first end @form_errors[key.to_s] = value end @g.form(@form_args) do if block_given? yield self end end end ## # Generate a `` tag. # # @param [String] text The text to display inside the legend tag. # @example # form_for(@data, :method => :post) do |f| # f.legend 'Ramaze rocks!' # end # def legend(text) @g.legend(text) end ## # Generate a fieldset tag. # # @param [Proc] block The form elements to display inside the fieldset. # @example # form_for(@data, :method => :post) do |f| # f.fieldset do # f.legend 'Hello, world!' # end # end # def fieldset(&block) @g.fieldset(&block) end ## # Generate an input tag with a type of "text" along with a label tag. # This method also has the alias "text" so feel free to use that one # instead of input_text. # # @param [String] label The text to display inside the label tag. # @param [String Symbol] name The name of the text field. # @param [Hash] args Any additional HTML attributes along with their # values. # @example # form_for(@data, :method => :post) do |f| # f.input_text 'Username', :username # end # def input_text(label, name, args = {}) # The ID can come from 2 places, id_for and the args hash id = args[:id] ? args[:id] : id_for(name) args = args.merge(:type => :text, :name => name, :id => id) if !args[:value] and @form_values.respond_to?(name) args[:value] = @form_values.send(name) end @g.p do label_for(id, label, name) @g.input(args) end end alias text input_text ## # Generate an input tag with a type of "password" along with a label. # Password fields are pretty much the same as text fields except that # the content of these fields is replaced with dots. This method has the # following alias: "password". # # @param [String] label The text to display inside the label tag. # @param [String Symbol] name The name of the password field. # @param [Hash] args Any additional HTML attributes along with their # values. # @example # form_for(@data, :method => :post) do |f| # f.input_password 'My password', :password # end # def input_password(label, name, args = {}) # The ID can come from 2 places, id_for and the args hash id = args[:id] ? args[:id] : id_for(name) args = args.merge(:type => :password, :name => name, :id => id) if !args[:value] and @form_values.respond_to?(name) args[:value] = @form_values.send(name) end @g.p do label_for(id, label, name) @g.input(args) end end alias password input_password ## # Generate a submit tag (without a label). A submit tag is a button that # once it's clicked will send the form data to the server. # # @param [String] value The text to display in the button. # @param [Hash] args Any additional HTML attributes along with their # values. # @example # form_for(@data, :method => :post) do |f| # f.input_submit 'Save' # end # def input_submit(value = nil, args = {}) args = args.merge(:type => :submit) args[:value] = value unless value.nil? @g.p do @g.input(args) end end alias submit input_submit ## # Generate an input tag with a type of "checkbox". # # If you want to have multiple checkboxes you can either use an array or # a hash. In the case of an array the values will also be used as text # for each checkbox. When using a hash the key will be displayed and # the value will be the value of the checkbox. Example: # # @data = Class.new # attr_reader :gender_arr # attr_reader :gender_hash # # def initialize # @gender_arr = ['male', 'female'] # @gender_hash = {"Male" => "male", "Female" => "female"} # end # end.new # # form_for(@data, :method => :post) do |f| # f.input_checkbox "Gender", :gender_arr # f.input_checkbox "Gender", :gender_hash # end # # @example # form_for(@data, :method => :post) do |f| # f.input_checkbox 'Remember me', :remember_user # end # # @param [String] label The text to display inside the label tag. # @param [String Symbol] name The name of the checkbox. # @param [String/Array] checked String or array that indicates which # value(s) should be checked. # @param [Hash] args Any additional HTML attributes along with their # values. # @option args [String/Symbol] :id The value to use for the ID attribute. # @option args [Array] :values An array containing the possible values # for the checkboxes. # @option args [String/Symbol] :span_class The class to use for the # `` element that's wrapped around the checkbox. # @option args [TrueClass/FalseClass] :show_value When set to false the # value of each checkbox won't be displayed to the right of the # checkbox. This option is set to true by default. # @option args [TrueClass/FalseClass] :show_label When set to true # (default) the label for the checkbox will be displayed. Setting this # to false will hide it. # def input_checkbox(label, name, checked = nil, args = {}) id = args[:id] ? args[:id] : "#{id_for(name)}_0" # Determine whether or not to show the value of the checkbox if args.key?(:show_value) show_value = args.delete(:show_value) else show_value = true end # Determine whether or not to show the label if args.key?(:show_label) show_label = args.delete(:show_label) else show_label = true end # Get the checkbox value from either the args hash or from # the form object (as specified in the form_for() method). if !args[:values] and @form_values.respond_to?(name) args[:values] = @form_values.send(name) end # That class for each element wrapper (a span tag) can be customized # using :span_class => "a_class". if args[:span_class] span_class = args[:span_class] args.delete(:span_class) else span_class = "checkbox_wrap" end # Get the type from the args hash instead of pre-defining it. Doing so # means we can use this method for the input_radio method. args[:type] = :checkbox if !args[:type] # Convert the values to an array if it's something we can't use in a loop # (e.g. a string). if args[:values].class != Hash and args[:values].class != Array args[:values] = [args[:values]] end # Create a checkbox for each value if !args[:values].empty? @g.p do # Let's create the label and the hidden field if show_label === true label_for(id, label, name) end # Loop through all the values. Each checkbox will have an ID of # "form-NAME-INDEX". Each name will be NAME followed by [] to # indicate it's an array (since multiple values are possible). args[:values].each_with_index do |value, index| id = args[:id] ? args[:id] : "#{id_for(name)}_#{index}" if args[:type] == :checkbox checkbox_name = "#{name}[]" else checkbox_name = name end # Copy all additional attributes and their values except the # values array. opts = args.clone opts.delete(:values) # Get the value and text to display for each checkbox if value.class == Array checkbox_text = value[0] checkbox_value = value[1] else checkbox_text = checkbox_value = value end # Let's see if the current item is checked if checked.class == Array if checked.include?(checkbox_value) opts[:checked] = 'checked' end else if checkbox_value == checked opts[:checked] = 'checked' end end # And we're done, easy wasn't it? opts = opts.merge( :name => checkbox_name, :id => id, :value => checkbox_value ) # Generate the following HTML: # # # #{value} # # @g.span(:class => span_class) do @g.input(opts) " #{checkbox_text}" if show_value === true end end end end end alias checkbox input_checkbox ## # Generate an input tag with a type of "radio". # # If you want to generate multiple radio buttons you can use an array # just like you can with checkboxes. Example: # # @data = Class.new # attr_reader :gender_arr # attr_reader :gender_hash # # def initialize # @gender_arr = ['male', 'female'] # @gender_hash = {"Male" => "male", "Female" => "female"} # end # end.new # # form_for(@data, :method => :post) do |f| # f.input_radio "Gender", :gender_arr # f.input_radio "Gender", :gender_hash # end # # For more information see the input_checkbox() method. # # @param [String] label The text to display inside the label tag. # @param [String Symbol] name The name of the radio button. # @param [String] checked String that indicates if (and which) radio # button should be checked. # @param [Hash] args Any additional HTML attributes along with their # values. # @see input_checkbox() # @example # form_for(@data, :method => :post) do |f| # f.input_radio 'Gender', :gender # end # def input_radio(label, name, checked = nil, args = {}) # Force a type of "radio" args[:type] = :radio if !args[:span_class] args[:span_class] = "radio_wrap" end self.input_checkbox(label, name, checked, args) end alias radio input_radio ## # Generate a field for uploading files. # # @param [String] label The text to display inside the label tag. # @param [String Symbol] name The name of the radio tag. # @param [Hash] args Any additional HTML attributes along with their # values. # @example # form_for(@data, :method => :post) do |f| # f.input_file 'Image', :image # end # def input_file(label, name, args = {}) id = args[:id] ? args[:id] : id_for(name) args = args.merge(:type => :file, :name => name, :id => id) @g.p do label_for(id, label, name) @g.input(args) end end alias file input_file ## # Generate a hidden field. Hidden fields are essentially the same as # text fields except that they aren't displayed in the browser. # # @param [String Symbol] name The name of the hidden field tag. # @param [String] value The value of the hidden field # @param [Hash] args Any additional HTML attributes along with their # values. # @example # form_for(@data, :method => :post) do |f| # f.input_hidden :user_id # end # def input_hidden(name, value = nil, args = {}) args = args.merge(:type => :hidden, :name => name) if !value and @form_values.respond_to?(name) args[:value] = @form_values.send(name) else args[:value] = value end @g.input(args) end alias hidden input_hidden ## # Generate a text area. # # @param [String] label The text to display inside the label tag. # @param [String Symbol] name The name of the textarea. # @param [Hash] args Any additional HTML attributes along with their # values. # @example # form_for(@data, :method => :post) do |f| # f.textarea 'Description', :description # end # def textarea(label, name, args = {}) id = args[:id] ? args[:id] : id_for(name) # Get the value of the textarea if !args[:value] and @form_values.respond_to?(name) value = @form_values.send(name) else value = args[:value] args.delete(:value) end args = args.merge(:name => name, :id => id) @g.p do label_for(id, label, name) @g.textarea(args){ value } end end ## # Generate a select tag along with the option tags and a label. # # @param [String] label The text to display inside the label tag. # @param [String Symbol] name The name of the select tag. # @param [Hash] args Hash containing additional HTML attributes. # @example # form_for(@data, :method => :post) do |f| # f.select 'Country', :country_list # end # def select(label, name, args = {}) id = args[:id] ? args[:id] : id_for(name) multiple, size = args.values_at(:multiple, :size) # Get all the values if !args[:values] and @form_values.respond_to?(name) values = @form_values.send(name) else values = args[:values] args.delete(:values) end args[:multiple] = 'multiple' if multiple args[:size] = (size || values.count || 1).to_i args[:name] = multiple ? "#{name}[]" : name args = args.merge(:id => id) # Retrieve the selected value has_selected, selected = args.key?(:selected), args[:selected] selected = [selected] if !selected.is_a?(Array) args.delete(:selected) @g.p do label_for(id, label, name) @g.select args do values.each do |value, o_name| o_name ||= value o_args = {:value => value} if has_selected and selected.include?(value) o_args[:selected] = 'selected' end @g.option(o_args){ o_name } end end end end ## # Method used for converting the results of the BlueForm helper to a # string # # @return [String] The form output # def to_s @g.to_s end private ## # Generate a label based on the id and value. # # @param [String] id The ID to which the label belongs. # @param [String] value The text to display inside the label tag. # @param [String] name The name of the field to which the label belongs. # def label_for(id, value, name) if error = @form_errors.delete(name.to_s) @g.label("#{value} ", :for => id){ @g.span(:class => :error){ error } } else @g.label(value, :for => id) end end ## # Generate a value for an ID tag based on the field's name. # # @param [String] field_name The name of the field. # @return [String] The ID for the specified field name. # def id_for(field_name) if name = @form_args[:name] "#{name}_#{field_name}".downcase.gsub(/-/, '_') else "form_#{field_name}".downcase.gsub(/-/, '_') end end end # Form end # BlueForm end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/tagz.rb0000644000004100000410000000115712140566653020230 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'tagz' module Ramaze module Helper ## # Allows you to use some shortcuts for Tagz in your Controller. # use this inside your controller to directly build Tagz # Refer to the Tagz-documentation and testsuite for more examples. # # Usage: # # tagz { h1_{ "Apples & Oranges" } } #=> "

Apples & Oranges

" # tagz { h1_(:class => 'fruits&floots'){ 'Apples' } } # Tagz = ::Tagz end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/thread.rb0000644000004100000410000000124712140566653020532 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module Helper module Thread ## # The thread method executes the specified block in a new thread. # # @param [Block] block The block that contains the code that will be # executed in the new thread. # def thread &block parent_thread = Thread.current Thread.new do begin block.call rescue Exception => e parent_thread.raise(e) end end end end # Thread end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/identity.rb0000644000004100000410000001047712140566653021121 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'openid' require 'openid/store/filesystem' require 'openid/extensions/pape' require 'openid/extensions/sreg' module Ramaze openid_store_file = ::File.join(Ramaze.options.roots[0], '/tmp', 'openid-store') # Constant for storing meta-information persistent OpenIDStore = OpenID::Store::Filesystem.new(openid_store_file) # This is called Identity to avoid collisions with the original openid.rb # It provides a nice and simple way to provide and control access over the # OpenID authentication model. module Helper module Identity LOOKUP << self # Simple form for use or overwriting. # Has to provide the same functionality when overwritten or directly # embedded into a page. def openid_login_form(caption="login") %{
Identity URL:
} end # We land here from the openid_login_form and if we can find a matching # OpenID server we redirect the user to it, the browser will return to # openid_complete when the authentication is complete. def openid_begin # The OpenID URL pointing to a user's OpenID page, # for example: http://username.myopenid.com) url = request['url'] redirect_referrer if url.to_s.empty? session[:openid] ||= {} session[:openid][:entry] = request.referrer openid_request = openid_consumer.begin(url) # We want these communications to be a secure as the server can # support! papereq = OpenID::PAPE::Request.new papereq.add_policy_uri(OpenID::PAPE::AUTH_PHISHING_RESISTANT) papereq.max_auth_age = 2*60*60 openid_request.add_extension(papereq) # Request information about the person sregreq = OpenID::SReg::Request.new sregreq.request_fields(['fullname', 'nickname', 'dob', 'email', 'gender', 'postcode', 'country', 'language', 'timezone']) openid_request.add_extension(sregreq) openid_request.return_to_args['did_pape'] = 'y' root = "http://#{request.http_host}/" return_to = request.domain(rs(:openid_complete)).to_s immediate = false if openid_request.send_redirect?(root, return_to, immediate) redirect_url = openid_request.redirect_url(root, return_to, immediate) raw_redirect redirect_url else # what the hell is @form_text ? end rescue OpenID::OpenIDError => ex flash[:error] = "Discovery failed for #{url}: #{ex}" raw_redirect rs(:/) end # After having authenticated at the OpenID server browsers are redirected # back here and on success we set the session[:openid][:identity] and a little # default flash message. Then we redirect to wherever session[:openid][:entry] # points us to, which was set on openid_begin to the referrer # # TODO: # - maybe using StackHelper, but this is a really minimal overlap? def openid_complete openid_response = openid_consumer.complete(request.params, request.url) case openid_response.status when OpenID::Consumer::FAILURE flash[:error] = "OpenID - Verification failed: #{openid_response.message}" when OpenID::Consumer::SUCCESS # Backwards compatibility session[:openid][:identity] = openid_response.identity_url session[:openid][:sreg] = OpenID::SReg::Response.from_success_response(openid_response) # Forward compatibility :) session[:openid_identity] = openid_response.identity_url session[:openid_sreg] = OpenID::SReg::Response.from_success_response(openid_response) flash[:success] = 'OpenID - Verification done.' end session.delete(:_openid_consumer_service) raw_redirect session[:openid][:entry] end private # Fetch/Create a OpenID::Consumer for current session. def openid_consumer OpenID::Consumer.new(session, Ramaze::OpenIDStore) end end # Identity end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/user.rb0000644000004100000410000002137512140566653020245 0ustar www-datawww-datamodule Ramaze module Helper ## # This helper provides a convenience wrapper for handling authentication # and persistence of users. # # On every request, when you use the {UserHelper#user} method for the first # time, we confirm the authentication and store the returned object in the # request.env, usually this will involve a request to your database. # # @example Basic usage with User::authenticate # # We assume that User::[] will make a query and returns the requested # # User instance. This instance will be wrapped and cached. # # class User # def self.authenticate(creds) # User[:name => creds['name'], :pass => creds['pass']] # end # end # # class Profiles < Ramaze::Controller # helper :user # # def edit # redirect_referrer unless logged_in? # "Your profile is shown, your are logged in." # end # end # # class Accounts < Ramaze::Controller # helper :user # # def login # return unless request.post? # user_login(request.subset(:name, :pass)) # redirect Profiles.r(:edit) # end # # def logout # user_logout # redirect_referer # end # end # # On every request it checks authentication again and retrieves the model, # we are not using a normal cache for this as it may lead to behaviour that # is very hard to predict and debug. # # You can however, add your own caching quite easily. # # @example caching the authentication lookup with memcached # # Add the name of the cache you are going to use for the authentication # # and set all caches to use memcached # # Ramaze::Cache.options do |cache| # cache.names = [:session, :user] # cache.default = Ramaze::Cache::MemCache # end # # class User # # # Try to fetch the user from the cache, if that fails make a query. # # We are using a ttl (time to live) of one hour, that's just to show # # you how to do it and not necessary. # def self.authenticate(credentials) # cache = Ramaze::Cache.user # # if user = cache[credentials] # return user # elsif user = User[:name => creds['name'], :pass => creds['pass']] # cache.store(credentials, user, :ttl => 3600) # end # end # end # # @example Using a lambda instead of User::authenticate # # assumes all your controllers inherit from this one # # class Controller < Ramaze::Controller # trait :user_callback => lambda{|creds| # User[:name => creds['name'], :pass => creds['pass']] # } # end # # @example Using a different model instead of User # # assumes all your controllers inherit from this one # # class Controller < Ramaze::Controller # trait :user_model => Account # end # # @author manveru # module UserHelper # Using this as key in request.env RAMAZE_HELPER_USER = 'ramaze.helper.user'.freeze ## # Use this method in your application, but do not use it in conditionals # as it will never be nil or false. # # @api external # @author manveru # @return [Ramaze::Helper::User::Wrapper] wrapped return value from # model or callback # def user env = request.env found = env[RAMAZE_HELPER_USER] return found if found model, callback = ancestral_trait.values_at(:user_model, :user_callback) model ||= ::User unless callback env[RAMAZE_HELPER_USER] = Wrapper.new(model, callback) end ## # This method is used to authenticate a user against the supplied # credentials (which default to ``request.params``). # # This method is a proxy to user._login which returns the value as # returned by ``Ramaze::Helper::User::Wrapper#_login``. # # The supplied argument should be a hash with the user's credentials. The # credentials hash may use any naming for the hash keys as long as they # are consistent with the model which authenticates them (through the # ``authenticate()`` method) such as: # # {"username" =>"name", "password" => "the_passwd"} # # On success it returns a hash of the credentials embedded within a hash # whose only key is ':credentials' such as the following: # # {:credentials=>{"username"=>"myuser", "password"=>"mypassword"}} # # On failure to authenticate this method returns nil. # # @example # auth = {"username" => "my_username", "password" => "mypass"} # creds = user_login(auth) # if creds # respond 'You have been logged in as #{creds[:credentials]["username"]}', 200 # else # respond 'You could not be logged in', 401 # end # # @author manveru # @api external # @see Ramaze::Helper::User::Wrapper#_login # @param [Hash] creds the credentials that will be passed to the callback or model. # @return [nil Hash[Hash]] # def user_login(creds = request.params) user._login(creds) end ## # Shortcut for user._logout # # @author manveru # @api external # @see Ramaze::Helper::User::Wrapper#_logout # @return [NilClass] # def user_logout user._logout end ## # Checks if the user is logged in and returns true if this is the case and # false otherwise. # # @author manveru # @api external # @see Ramaze::Helper::User::Wrapper#_logged_in? # @return [TrueClass|FalseClass] whether the user is logged in already. # def logged_in? user._logged_in? end ## # Wrapper for the ever-present "user" in your application. It wraps # around an arbitrary instance and worries about authentication and # storing information about the user in the session. # # In order to not interfere with the wrapped instance/model we start our # methods with an underscore. # # Patches and suggestions are highly appreciated. # class Wrapper < BlankSlate attr_accessor :_model, :_callback, :_user def initialize(model, callback) @_model, @_callback = model, callback @_user = nil _login end ## # @author manveru # @see Ramaze::Helper::User#user_login # @param [Hash] creds this hash will be stored in the session on # successful login # @return [Ramaze::Helper::User::Wrapper] wrapped return value from # model or callback # def _login(creds = nil) if creds if @_user = _would_login?(creds) Current.session.resid! self._persistence = {:credentials => creds} end elsif persistence = self._persistence @_user = _would_login?(persistence[:credentials]) end end ## # The callback should return an instance of the user, otherwise it # should answer with nil. # # This will not actually login, just check whether the credentials # would result in a user. # def _would_login?(creds) return unless creds if c = @_callback c.call(creds) elsif _model.respond_to?(:authenticate) _model.authenticate(creds) else Log.warn( "Helper::User has no callback and there is no %p::authenticate" \ % _model ) nil end end ## # @author manveru # @api internal # @see Ramaze::Helper::User#user_logout # def _logout (_persistence || {}).clear Current.request.env['ramaze.helper.user'] = nil Current.session.resid! end ## # @author manveru # @api internal # @see Ramaze::Helper::User#logged_in? # @return [true false] whether the current user is logged in. # def _logged_in? !!_user end def _persistence=(obj) Current.session[:USER] = obj end def _persistence Current.session[:USER] end ## # Refer everything not known # THINK: This might be quite confusing... should we raise instead? # def method_missing(meth, *args, &block) return unless _user _user.send(meth, *args, &block) end end end # User end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/helper/stack.rb0000644000004100000410000000401212140566653020361 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module Helper ## # Provides an call/answer mechanism, this is useful for example in a # login-system. # # It is basically good to redirect temporarly somewhere else without # forgetting where you come from and offering a nice way to get back # to the last urls. # # Example: # # class AuthController < Controller # helper :stack # # def login pass # if pass == 'password' # session[:logged_in] = true # answer '/' # else # "failed" # end # end # # def logged_in? # !!session[:logged_in] # end # end # # class ImportantController < Controller # helper :stack # # def secret_information # call :login unless logged_in? # "Agent X is assigned to fight the RubyNinjas" # end # end # module Stack # redirect to another location and pushing the current location # on the session[:STACK] def push(frame) (session[:STACK] ||= []) << frame end def call(this) push(request.fullpath) redirect(this) end ## # return to the last location on session[:STACK] # The optional alternative paramter will be used to redirect in case you # are not inside_stack? # If the session has no stack and no alternative is given this won't do # anything # def answer(alternative = nil) if inside_stack? stack = session[:STACK] target = stack.pop session.delete(:STACK) if stack.empty? redirect(target) elsif alternative redirect(alternative) end end # check if the stack has something inside. def inside_stack? session[:STACK] and session[:STACK].any? end end # Stack end # Helper end # Ramaze ramaze-2012.12.08/lib/ramaze/gestalt.rb0000644000004100000410000001011112140566653017435 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze ## # Gestalt is the custom HTML/XML builder for Ramaze, based on a very simple # DSL it will build your markup. # # @example # html = # Gestalt.build do # html do # head do # title "Hello, World!" # end # body do # h1 "Hello, World!" # end # end # end # class Gestalt attr_accessor :out ## # The default way to start building your markup. # Takes a block and returns the markup. # # @param [Proc] block # def self.build(&block) self.new(&block).to_s end ## # Gestalt.new is like ::build but will return itself. # you can either access #out or .to_s it, which will # return the actual markup. # # Useful for distributed building of one page. # # @param [Proc] block # def initialize(&block) @out = [] instance_eval(&block) if block_given? end ## # Catching all the tags. passing it to _gestalt_build_tag # # @param [String] meth The method that was called. # @param [Hash] args Additional arguments passed to the called method. # @param [Proc] block # def method_missing(meth, *args, &block) _gestalt_call_tag meth, args, &block end ## # Workaround for Kernel#p to make

tags possible. # # @param [Hash] args Extra arguments that should be processed before # creating the paragraph tag. # @param [Proc] block # def p(*args, &block) _gestalt_call_tag :p, args, &block end ## # Workaround for Kernel#select to make work. # # @param [Array] args Extra arguments that should be processed before # creating the select tag. # @param [Proc] block # def select(*args, &block) _gestalt_call_tag(:select, args, &block) end ## # Calls a particular tag based on the specified parameters. # # @param [String] name # @param [Hash] args # @param [Proc] block # def _gestalt_call_tag(name, args, &block) if args.size == 1 and args[0].kind_of? Hash # args are just attributes, children in block... _gestalt_build_tag name, args[0], &block elsif args[1].kind_of? Hash # args are text and attributes ie. a('mylink', :href => '/mylink') _gestalt_build_tag(name, args[1], args[0], &block) else # no attributes, but text _gestalt_build_tag name, {}, args, &block end end ## # Build a tag for `name`, using `args` and an optional block that # will be yielded. # # @param [String] name # @param [Hash] attr # @param [Hash] text # def _gestalt_build_tag(name, attr = {}, text = []) @out << "<#{name}" @out << attr.map{|(k,v)| %[ #{k}="#{_gestalt_escape_entities(v)}"] }.join if text != [] or block_given? @out << ">" @out << _gestalt_escape_entities([text].join) if block_given? text = yield @out << text.to_str if text != @out and text.respond_to?(:to_str) end @out << "" else @out << ' />' end end ## # Replace common HTML characters such as " and < with their entities. # # @param [String] s The HTML string that needs to be escaped. # def _gestalt_escape_entities(s) s.to_s.gsub(/&/, '&'). gsub(/"/, '"'). gsub(/'/, '''). gsub(//, '>') end ## # Shortcut for building tags, # # @param [String] name # @param [Array] args # @param [Proc] block # def tag(name, *args, &block) _gestalt_call_tag(name.to_s, args, &block) end ## # Convert the final output of Gestalt to a string. # This method has the following alias: "to_str". # # @return [String] # def to_s @out.join end alias to_str to_s end # Gestalt end # Ramaze ramaze-2012.12.08/lib/ramaze/response.rb0000644000004100000410000000401712140566653017640 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze ## # Ramaze::Response is a small wrapper around Rack::Response that makes it # easier to send response data to the browser from a Ramaze application. # # @author Michael Fellinger # @since 01-03-2008 # class Response < Rack::Response # Alias for Current.response def self.current; Current.response; end ## # Creates a new instance of the response class and processes the specified # parameters. Once this has been done it calls Rack::Response#initialize. # # @author Michael Fellinger # @since 01-03-2008 # @param [Array] body An array containing the data for the response body. # @param [Fixnum] status The HTPP status code for the response. # @param [Hash] header A hash containing additional headers and their # values. # @param [Proc] block # def initialize(body = [], status = 200, header = {}, &block) modified_header = Ramaze.options.header.merge(header) header.merge!(modified_header) super end ## # Updates the body, status and headers. # # @author Michael Fellinger # @since 01-03-2008 # @see Ramaze::Response#initialize # def build(new_body = nil, new_status = nil, new_header = nil) self.header.merge!(new_header) if new_header self.body = new_body if new_body self.status = new_status if new_status end ## # Sets the body of the response to the given object. # # @author Michael Fellinger # @since 01-03-2008 # @param [Object] obj The object to use as the response body. # def body=(obj) if obj.respond_to?(:stat) @length = obj.stat.size @body = obj elsif obj.respond_to?(:size) @body = [] @length = 0 write(obj) else raise(ArgumentError, "Invalid body: %p" % obj) end end end # Response end # Ramaze ramaze-2012.12.08/lib/ramaze/app.rb0000644000004100000410000001331112140566653016557 0ustar www-datawww-datamodule Ramaze # An application is a collection of controllers and options that have a common # name. Every application has a location it dispatches from, this behaves # similar to Rack::URLMap. AppMap = Innate::URLMap.new #:nodoc: def self.to(object) app_name = object.ancestral_trait[:app] App[app_name].to(object) end ## # App is the superclass for applications and acts as their prototype when it # comes to configuration. # # An application consists of options, a location, and a list of objects. The # objects are usually {Ramaze::Controller}s. # # The options are inherited, the basics are set in Ramaze.options, from there # to Ramaze::App.options, and finally into every instance of App. # # This allows to collect {Ramaze::Controller}s of your application into a # common group that can easily be used in other applications, while retaining # the original options. # # Every instance of {App} is mapped in {AppMap}, which is the default # location to #call from Rack. # # Additionally, every {App} can have custom locations for # root/public/view/layout directories, which allows reuse beyond directory # boundaries. # # In contrast to Innate, where all Nodes share the same middleware, {App} # also has a subset of middleware that handles serving static files, routes # and rewrites. # # To indicate that a {Ramaze::Controller} belongs to a specific application, # you can pass a second argument to {Ramaze::Controller::map} # # @example adding Controller to application # class WikiController < Ramaze::Controller # map '/', :wiki # end # # The App instance will be created for you and if you don't use any other # applications in your code there is nothing else you have to do. Others can # now come and simply reuse your code in their own applications. # # There is some risk of name collisions if everybody calls their app `:wiki`, # but given that you only use one foreign app of this kind might give less # reason for concern. # # If you still try to use two apps with the same name, you have to be # careful, loading one first, renaming it, then loading the second one. # # The naming of an App has no influence on any other aspects of dispatching # or configuration. # class App include Innate::Optioned # options not found here will be looked up in Ramaze.options options.dsl do o "Unique identifier for this application", :name, :pristine end APP_LIST = {} attr_reader :name, :location, :url_map, :options ## # Finds or creates an application for the given name and URI. # # @author Michael Fellinger # @param [String] name The name of the application. # @param [String] location The URI to which the app is mapped. # @return [Ramaze::App] # def self.find_or_create(name, location = nil) location = '/' if location.nil? && name == :pristine self[name] || new(name, location) end ## # Returns the application for the given name. # # @author Michael Fellinger # @param [String] name The name of the application. # @return [Ramaze::App] # def self.[](name) APP_LIST[name.to_sym] end ## # Creates a new instance of the application and sets the name and location. # # @author Michael Fellinger # @since 30-06-2009 # @param [String] name The name of the application. # @param [String] location The location to which the application is mapped. # def initialize(name, location = nil) @name = name.to_sym @url_map = Innate::URLMap.new self.location = location if location APP_LIST[@name] = self @options = self.class.options.sub(@name) end ## # Syncs the instance of the current application with Ramaze::AppMap. # # @author Michael Fellinger # @since 30-06-2009 # def sync AppMap.map(location, self) end ## # Sets the location and syncs the application. # # @author Michael Fellinger # @since 30-06-2009 # def location=(location) @location = location.to_str.freeze sync end ## # Allows the application to be called as a Rack middleware. # # @author Michael Fellinger # @since 30-06-2009 # @param [Hash] env The environment hash. # def call(env) to_app.call(env) end ## # Converts the application to a Rack compatible class. # # @author Michael Fellinger # @since 30-06-2009 # @return [Rack::Cascade] # def to_app files = Ramaze::Files.new(*public_roots) app = Current.new(Route.new(url_map), Rewrite.new(url_map)) Rack::Cascade.new([files, app]) end ## # Maps an object to the given URI. # # @author Michael Fellinger # @since 30-06-2009 # @param [String] location The URI to map the object to. # @param [Object] object The object (usually a controller) to map to the # URI. # def map(location, object) url_map.map(location, object) end ## # Returns a URI to the given object. # # @author Michael Fellinger # @since 30-06-2009 # @param [Object] object An object for which to generate the URI. # def to(object) return unless mapped = url_map.to(object) [location, mapped].join('/').squeeze('/') end ## # Returns an array containing all the public directories for each root # directory. # # @author Michael Fellinger # @since 30-06-2009 # @return [Array] # def public_roots roots, publics = [*options.roots], [*options.publics] roots.map{|root| publics.map{|public| ::File.join(root, public) }}.flatten end end # App end # Ramaze ramaze-2012.12.08/lib/ramaze/bin/0000755000004100000410000000000012140566653016223 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/bin/runner.rb0000644000004100000410000000612012140566653020060 0ustar www-datawww-datarequire 'optparse' require 'pathname' require __DIR__('create') module Ramaze #:nodoc: module Bin ## # Module used for running a particular command based on the specified # command line arguments. # # Usage: # # ramaze --help # Shows a help message # ramaze -h # Shows a help message as well # ramaze -v # Shows the version of Ramaze # # ramaze [COMMAND] # Runs [COMMAND] # # @author Yorick Peterse # @since 21-07-2011 # module Runner Commands = { :create => Ramaze::Bin::Create, } Banner = <<-TXT.strip Ramaze is a simple, light and modular open-source web application framework written in Ruby. Usage: ramaze [COMMAND] [OPTIONS] Example: ramaze create blog TXT ## # Runs a particular command based on the specified array. # # @example # Ramaze::Bin::Runner.run(ARGV) # Ramaze::Bin::Runner.run(['start', '--help']) # # @author Yorick Peterse # @since 21-07-2011 # @param [Array] argv An array containing command line arguments, set to # ARGV by default. # def self.run(argv=ARGV) op = OptionParser.new do |opt| opt.banner = Banner opt.summary_indent = ' ' opt.separator "\nCommands:\n #{commands_info.join("\n ")}" # Show all the common options opt.separator "\nOptions:\n" # Show the version of Ramaze opt.on('-v', '--version', 'Shows the version of Ramaze') do puts Ramaze::VERSION exit end opt.on('-h', '--help', 'Shows this help message') do puts op exit end end op.order!(argv) # Show a help message if no command has been specified if !argv[0] puts op.to_s exit end cmd = argv.delete_at(0).to_sym if Commands.key?(cmd) cmd = Commands[cmd].new cmd.run(argv) else abort 'The specified command is invalid' end end ## # Generates an array of "rows" where each row contains the name and # description of a command. The descriptions of all commands are aligned # based on the length of the longest command name. # # @author Yorick Peterse # @since 21-07-2011 # @return [Array] # def self.commands_info cmds = [] longest = Commands.map { |name, klass| name.to_s }.sort[0].size Commands.each do |name, klass| name = name.to_s desc = '' # Try to extract the command description if klass.respond_to?(:const_defined?) \ and klass.const_defined?(:Description) desc = klass.const_get(:Description) end # Align the description based on the length of the name while name.size <= longest do name += ' ' end cmds.push(["#{name} #{desc}"]) end return cmds end end # Runner end # Bin end # Ramaze ramaze-2012.12.08/lib/ramaze/bin/create.rb0000644000004100000410000000430012140566653020010 0ustar www-datawww-datarequire 'fileutils' module Ramaze #:nodoc: module Bin ## # Simple command that allows users to easily create a new application based # on the prototype that ships with Ramaze. # # Usage: # # ramaze create blog # # @author Yorick Peterse # @since 21-07-2011 # class Create Description = 'Creates a new Ramaze application' Banner = <<-TXT.strip Allows developers to easily create new Ramaze applications based on the prototype that ships with Ramaze. Usage: ramaze create [NAME] [OPTIONS] Example: ramaze create blog TXT ## # Creates a new instance of the command and sets the options for # OptionParser. # # @author Yorick Peterse # @since 21-07-2011 # def initialize @options = { :force => false } @opts = OptionParser.new do |opt| opt.banner = Banner opt.summary_indent = ' ' opt.separator "\nOptions:\n" opt.on('-f', '--force', 'Overwrites existing directories') do @options[:force] = true end opt.on('-h', '--help', 'Shows this help message') do puts @opts exit end end end ## # Runs the command based on the specified command line arguments. # # @author Yorick Peterse # @since 21-07-2011 # @param [Array] argv Array containing all command line arguments. # def run(argv = []) @opts.parse!(argv) path = argv.delete_at(0) proto = __DIR__('../../proto') abort 'You need to specify a name for your application' if path.nil? if File.directory?(path) and @options[:force] === false abort 'The specified application already exists, use -f to overwrite it' end if File.directory?(path) and @options[:force] === true FileUtils.rm_rf(path) end begin FileUtils.cp_r(proto, path) puts "The application has been generated and saved in #{path}" rescue abort 'The application could not be generated' end end end # Create end # Bin end # Ramaze ramaze-2012.12.08/lib/ramaze/log/0000755000004100000410000000000012140566653016234 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/log/logging.rb0000644000004100000410000000531212140566653020210 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze ## # This module provides a basic skeleton for your own loggers to be compatible. # # @example # class MyLogger # include Logging # # def log(tag, *args) # p tag => args # end # end # module Logging ## # Takes the tag (:warn|:debug|:error|:info) and the name of a method to be # called upon elements of msgs that don't respond to :to_str # Goes on and sends the tag and transformed messages each to the #log method. # If you include this module you have to define #log or it will raise. # # @param [String] tag The level of the log message. # @param [String] meth # @param [Array] msgs The data that should be logged. # def tag_log(tag, meth, *msgs) msgs.each do |msg| string = (msg.respond_to?(:to_str) ? msg : msg.send(meth)) log(tag, string) end end ## # Converts everything given to strings and passes them on with :info # # @param [Array] objects An array of objects that need to be converted to # strings. # def info(*objects) tag_log(:info, :to_s, *objects) end ## # Converts everything given to strings and passes them on with :warn # # @param [Array] objects An array of objects that need to be converted to # strings. # def warn(*objects) tag_log(:warn, :to_s, *objects) end ## # Inspects objects if they are no strings. Tag is :debug # # @param [Array] objects An array of objects that will be inspected. # def debug(*objects) tag_log(:debug, :inspect, *objects) end ## # Inspects objects if they are no strings. Tag is :dev # # @param [Array] objects An array of objects that will be inspected. # def dev(*objects) tag_log(:dev, :inspect, *objects) end alias << debug ## # Takes either an Exception or just a String, formats backtraces to be a bit # more readable and passes all of this on to tag_log :error # # @param [Object] ex The exception that was raised. # def error(ex) if ex.respond_to?(:exception) message = ex.backtrace message.map!{|m| m.to_s.gsub(/^#{Regexp.escape(Dir.pwd)}/, '.') } message.unshift(ex.inspect) else message = ex.to_s end tag_log(:error, :to_s, *message) end ## # Nothing. # # THINK: Is this really required? It doesn't do anything anyway. # def shutdown end ## # Stub for WEBrick # def debug? false end end # Logging end # Ramaze ramaze-2012.12.08/lib/ramaze/log/rotatinginformer.rb0000644000004100000410000001735512140566653022165 0ustar www-datawww-datamodule Ramaze module Logger ## # A logger that rotates log files based on the current date. Log files are # named after the date on which they were created. If the date changes a new # log file is used. # # In order to use this logger you'll have to specify a base directory for # all log files. This directory will not be created for you so make sure it # exists. Loading the class can be done as following: # # logger = Ramaze::Logger::RotatingInformer.new('./log') # # This creates a new instance that uses the directory ``./log`` for all it's # log files. # # The default log format is ``%Y-%m-%d.log``. If you want to change this you # can specify an alternative format (including the extension) as the # secondary parameter of the ``.new()`` method: # # logger = Ramaze::Logger::RotatingInformer.new('./log', '%d-%m-%Y.log') # # In this case the instance will use the date format ``dd-mm-yyyy`` along # with the ``.log`` extension. # # Besides the date format you can also customize the timestamp format as # well as the format of each logged messages. Both these are set in a trait. # The timestamp format is located in the trait ``:timestamp`` while the # message format is stored in the ``:format`` trait. These can be set as # following: # # logger = Ramaze::Logger::RotatingInformer.new('./log') # # logger.trait[:timestamp] = '...' # logger.trait[:format] = '...' # # When setting the ``:format`` trait you can use 3 tags that will be # replaced by their corresponding values. These are the following tags: # # * ``%time``: will be replaced by the current time. # * ``%prefix``: the log level such as "ERROR" or "INFO". # * ``%text``: the actual log message. # class RotatingInformer include Innate::Traited include Logging attr_accessor :time_format, :log_levels attr_reader :base_dir # parameter for Time.now.strftime trait :timestamp => "%Y-%m-%d %H:%M:%S" # This is how the final output is arranged. trait :format => "[%time] %prefix %text" ## # Create a new instance of RotatingInformer. # # base_dir is the directory where all log files will be stored # # time_format is the time format used to name the log files. Possible # formats are identical to those accepted by Time.strftime # # log_levelse is an array describing what kind of messages that the log # receives. The array may contain any or all of the symbols :debug, # :error, :info and/or :warn # # @example # # Creates logs in directory called logs. The generated filenames # # will be in the form YYYY-MM-DD.log # RotatingInformer.new('logs') # # # Creates logs in directory called logs. The generated filenames # # will be in the form YYYY-MM.txt # RotatingInformer.new('logs', '%Y-%m.txt') # # # Creates logs in directory called logs. The generated filenames # # will be in the form YYYY-MM.txt. # # Only errors will be logged to the files. # RotatingInformer.new('logs', '%Y-%m.txt', [:error]) # # @param [String] base_dir The base directory for all the log files. # @param [String] time_format The time format for all log files. # @param [Array] log_levels Array containing the type of messages to log. # def initialize(base_dir, time_format = '%Y-%m-%d.log', log_levels = [:debug, :error, :info, :warn]) # Verify and set base directory send :base_dir=, base_dir, true @time_format = time_format @log_levels = log_levels # Keep track of log shutdown (to prevent StackErrors due to recursion) @in_shutdown = false end ## # Set the base directory for log files # # If this method is called with the raise_exception parameter set to true # the method will raise an exception if the specified directory does not # exist or is unwritable. # # If raise_exception is set to false, the method will just silently fail # if the specified directory does not exist or is unwritable. # # @param [String] directory The base directory specified by the developer. # @param [Bool] raise_exception Boolean that indicates if an exception # should be raised if the base directory doesn't exist. # def base_dir=(directory, raise_exception = false) # Expand directory path base_dir = File.expand_path(directory) # Verify that directory path exists if File.exist?(base_dir) # Verify that directory path is a directory if File.directory?(base_dir) # Verify that directory path is writable if File.writable?(base_dir) @base_dir = base_dir else raise Exception.new("#{base_dir} is not writable") if raise_exception end else raise Exception.new("#{base_dir} is not a directory") if raise_exception end else raise Exception.new("#{base_dir} does not exist.") if raise_exception end end ## # Close the file we log to if it isn't closed already. # def shutdown if @out.respond_to?(:close) unless @in_shutdown @in_shutdown = true Log.debug("close, #{@out.inspect}") @in_shutdown = false end @out.close end end ## # Integration to Logging. # # @param [String] tag The type of message we're logging. # @param [Array] messages An array of messages to log. # def log(tag, *messages) return unless @log_levels.include?(tag) # Update current log update_current_log messages.flatten! prefix = tag.to_s.upcase.ljust(5) messages.each do |message| @out.puts(log_interpolate(prefix, message)) end @out.flush if @out.respond_to?(:flush) end ## # Takes the prefix (tag), text and timestamp and applies it to # the :format trait. # # @param [String] prefix # @param [String] text # @param [Integer] time # def log_interpolate(prefix, text, time = timestamp) message = class_trait[:format].dup vars = { '%time' => time, '%prefix' => prefix, '%text' => text } vars.each{|from, to| message.gsub!(from, to) } message end ## # This uses timestamp trait or a date in the format of # ``%Y-%m-%d %H:%M:%S`` # # @return [String] # def timestamp mask = class_trait[:timestamp] Time.now.strftime(mask || "%Y-%m-%d %H:%M:%S") end ## # Is ``@out`` closed? # # @return [TrueClass|FalseClass] # def closed? @out.respond_to?(:closed?) && @out.closed? end ## # Method that is called by Rack::CommonLogger when logging data to a file. # # @author Yorick Peterse # @param [String] message The data that has to be logged. # def write(message) log(:info, message) end private ## # Checks whether current filename is still valid. If not, update the # current log to point at the new filename. # def update_current_log out = File.join(@base_dir, Time.now.strftime(@time_format)) if @out.nil? || @out.path != out # Close old log if necessary shutdown unless @out.nil? || closed? # Start new log @out = File.open(out, 'ab+') end end end # RotatingInformer end # Log end # Ramaze ramaze-2012.12.08/lib/ramaze/log/logger.rb0000644000004100000410000000117412140566653020043 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'logger' module Ramaze module Logger ## # Informer for the Stdlib Logger. # class Logger < ::Logger ## # Integration to Logging # # @param [String] tag # @param [Hash] args # def log(tag, *args) __send__(tag, args.join("\n")) end ## # Stub for compatibility # # @param [Hash] args def dev(*args) debug(*args) end end # Logger end # Logger end # Ramaze ramaze-2012.12.08/lib/ramaze/log/hub.rb0000644000004100000410000000233112140566653017336 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module Logger ## # Bundles different informer instances and sends incoming messages to each. # This is the default with Informer as only member. # class LogHub include Logging attr_accessor :loggers attr_accessor :ignored_tags ## # Takes a list of instances or classes (which will be initialized) and that # are added to @loggers. All messages are then sent to each member. # # @param [Array] loggers # def initialize(*loggers) @loggers = loggers @ignored_tags = Set.new @loggers.map! do |logger| next(nil) if logger == self logger.is_a?(Class) ? logger.new : logger end @loggers.uniq! @loggers.compact! end ## # Integration to Logging # # @param [String] tag # @param [Hash] args # def log(tag, *args) return if @ignored_tags.include?(tag) @loggers.each do |logger| logger.log(tag, *args) end end end # Hub end # log end # Ramaze ramaze-2012.12.08/lib/ramaze/log/informer.rb0000644000004100000410000000750212140566653020406 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze module Logger ## # A minimal logger for Ramaze, supports files, CLI, colors and some # customization. # class Informer include Logging include Innate::Traited attr_accessor :out, :colorize, :log_levels # Should Ramaze try to use colors? trait :colorize => true # parameter for Time.now.strftime trait :timestamp => "%Y-%m-%d %H:%M:%S" # This is how the final output is arranged. trait :format => "[%time] %prefix %text" # Which tag should be in what color COLORS = { :dev => :blue, :debug => :yellow, :info => :green, :warn => :red, :error => :red, } ## # Create a new instance of Informer. # # @example # # Informer.new # => logs to stdout with all levels being shown. # Informer.new($stderr) # => same, but to stderr # # # same, but logs to the file foo.log (or creates it if it doesn't # # exist yet) # Informer.new("foo.log") # # Informer.new($stdout, [:info]) #=> show only #info messages to stdout. # # @param [String] out Specifies where the output should go. By default # this is set to STDOUT. # @param [Array] log_levels Array containing the levels that should be # logged. # def initialize(out = $stdout, log_levels = [:debug, :error, :info, :warn]) @colorize = false @out = case out when STDOUT, :stdout, 'stdout' $stdout when STDERR, :stderr, 'stderr' $stderr when IO out else if out.respond_to?(:puts) out else File.open(out.to_s, 'ab+') end end if @out.respond_to?(:tty?) and class_trait[:colorize] @colorize = @out.tty? end @log_levels = log_levels end ## # Close the file we log to if it isn't closed already. # def shutdown if @out.respond_to?(:close) Log.debug("close, #{@out.inspect}") @out.close end end ## # Integration to Logging # # @param [String] tag The log level for the current message(s). # @param [Array] messages Array containing the data that should be logged. # def log tag, *messages return if closed? || !@log_levels.include?(tag) messages.flatten! prefix = tag.to_s.upcase.ljust(5) if @colorize color = COLORS[tag] ||= :white prefix.replace prefix.send(color) end messages.each do |message| @out.puts(log_interpolate(prefix, message)) end @out.flush if @out.respond_to?(:flush) end ## # Takes the prefix (tag), text and timestamp and applies it to # the :format trait. # # @param [String] prefix # @param [String] text # @param [Integer] time # def log_interpolate prefix, text, time = timestamp message = class_trait[:format].dup vars = { '%time' => time, '%prefix' => prefix, '%text' => text } vars.each{|from, to| message.gsub!(from, to) } message end ## # This uses timestamp trait or a date in the format of # %Y-%m-%d %H:%M:%S # # => "2007-01-19 21:09:32" # def timestamp mask = class_trait[:timestamp] Time.now.strftime(mask || "%Y-%m-%d %H:%M:%S") end ## # Is @out closed? # def closed? @out.respond_to?(:closed?) and @out.closed? end end # Informer end # Log end # Ramaze ramaze-2012.12.08/lib/ramaze/log/syslog.rb0000644000004100000410000000366012140566653020106 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # Copyright (c) 2008 rob@rebeltechnologies.nl # All files in this distribution are subject to the terms of the MIT license. require 'syslog' module Ramaze module Logger ## # Logger class for writing to syslog. It is a *very* thin wrapper # around the Syslog library. # class Syslog include Logging # Hash containing various method aliases. Rbx and Jruby don't seem to like # the combination of alias() and module_function() so this works around # that. ALIASES = {:dev => :debug, :warn => :warning, :error => :err} ## # Open the syslog library, if it is allready open, we reopen it using the # new argument list. The argument list is passed on to the Syslog library # so please check that, and man syslog for detailed information. # # There are 3 parameters: # # * ident: The identification used in the log file, defaults to $0 # * options: defaults to Syslog::LOG_PID | Syslog::LOG_CONS # * facility: defaults to Syslog::LOG_USER # def initialize(*args) ::Syslog.close if ::Syslog.opened? ::Syslog.open(*args) end ## # Just sends all messages received to ::Syslog # We simply return if the log was closed for some reason, this behavior # was copied from Informer. We do not handle levels here. This will # be done by the syslog daemon based on it's configuration. def log(tag, *messages) return if !::Syslog.opened? tag = tag.to_sym if ALIASES.key?(tag) tag = ALIASES[tag] end messages = messages.map {|m| m.gsub(/(%[^m])/,'%\1')} ::Syslog.send(tag, *messages) end ## # Has to call the modules singleton-method. # def inspect ::Syslog.inspect end end # Syslog end # Logger end # Ramaze ramaze-2012.12.08/lib/ramaze/cache.rb0000644000004100000410000000253112140566653017044 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'innate/cache' module Ramaze Cache = Innate::Cache #:nodoc: class Cache autoload :LRU, 'ramaze/cache/lru' autoload :LocalMemCache, 'ramaze/cache/localmemcache' autoload :MemCache, 'ramaze/cache/memcache' autoload :Sequel, 'ramaze/cache/sequel' autoload :Redis, 'ramaze/cache/redis' ## # Overwrites {Innate::Cache#initialize} to make cache classes application # aware. This prevents different applications running on the same host and # user from overwriting eachothers data. # # @since 14-05-2012 # @see Innate::Cache#initialize # def initialize(name, klass = nil) @name = name.to_s.dup.freeze klass ||= options[@name.to_sym] @instance = klass.new @instance.cache_setup( ENV['HOSTNAME'], ENV['USER'], Ramaze.options.app.name.to_s, @name ) end ## # Clears the cache after a file has been reloaded. # # @author Michael Fellinger # @since 17-07-2009 # def self.clear_after_reload action.clear if respond_to?(:action) action_value.clear if respond_to?(:action_value) end end # Cache end # Ramaze ramaze-2012.12.08/lib/ramaze/reloader.rb0000644000004100000410000001350412140566653017600 0ustar www-datawww-data# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. module Ramaze ## # High performant source reloader # # This class acts as Rack middleware. # # It does not depend on Ramaze itself, but you might have to adjust the # Reloader::Hooks module or include your own module to override the hooks. # You also might have to set the Log constant. # # Currently, it uses RInotify if available and falls back to using File.stat. # # Please note that this will not reload files in the background, it does so # only when actively called # In case of Ramaze it is performing a check/reload cycle at the start of # every request, but also respects a cool down time, during which nothing will # be done. # # After every reload the OPTIONS hash will be checked for changed options and # assigned to the instance, so you may change options during the lifetime of # your application. # # A number of hooks will be executed during the reload cycle, see # Ramaze::ReloaderHooks for more information. # class Reloader OPTIONS = { # At most check every n seconds # nil/false will never trigger the reload cycle # 0 will cycle on every call :cooldown => 2, # Compiled files cannot be reloaded during runtime :ignore => /\.so$/, # Run cycle in a Thread.exclusive, by default no threads are used. :thread => false, # If you assign a block here it will be instance_evaled instead of # calling cycle. This allows you to use for example EventMachine for # well performing asynchronous cycling. :control => nil, # lambda{ cycle }, } begin begin gem('RInotify', '>=0.9') # is older version ok? rescue NoMethodError # Kernel::gem might simply be not available end require 'rinotify' require 'ramaze/reloader/watch_inotify' Watcher = WatchInotify rescue LoadError # stat always available require 'ramaze/reloader/watch_stat' Watcher = WatchStat end ## # Creates a new instance of the class and saves the application it has to # watch. # # @author Michael Fellinger # @since 09-08-2008 # @param [Ramaze::App] app The application to monitor. # def initialize(app) @app = app @files = {} @watcher = Watcher.new options_reload end ## # Returns all the options for this class. # # @author Michael Fellinger # @since 09-08-2008 # @return [Array] # def options_reload @cooldown, @ignore, @control, @thread = OPTIONS.values_at(:cooldown, :ignore, :control, :thread) end ## # Allows this class to be called as a Rack middleware. # # @author Michael Fellinger # @since 09-08-2008 # @param [Hash] env A hash containing all environment details. # def call(env) options_reload @watcher.call(@cooldown) do if @control instance_eval(&@control) elsif @thread Thread.exclusive{ cycle } else cycle end end @app.call(env) end ## # Loops through all the files and reloads all changes files. # # @author Michael Fellinger # @since 09-08-2008 # def cycle before_cycle rotation{|file| @watcher.watch(file) } @watcher.changed_files{|f| safe_load(f) } after_cycle end ## # A safe Kernel::load, issuing the hooks depending on the results # # @author Michael Fellinger # @since 09-08-2008 # @param [String] file Path to the file to safely load. # def safe_load(file) before_safe_load(file) load(file) after_safe_load_succeed(file) rescue Object => ex Log.error(ex) after_safe_load_failed(file, ex) end def rotation files = [$0, __FILE__, *$LOADED_FEATURES].uniq paths = ['./', *$LOAD_PATH].uniq files.each do |file| next if file =~ @ignore if not @files.has_key?(file) and path = figure_path(file, paths) @files[file] = path yield path end end end ## # Tries to find a given file in an array of file paths. # # @author Michael Fellinger # @since 09-08-2008 # @param [String] file The name of the file to look for. # @param [Array] paths An array of paths to search. # @return [String] # def figure_path(file, paths) if Pathname.new(file).absolute? return File.exist?(file) ? file : nil end paths.each do |possible_path| full_path = File.join(possible_path, file) return full_path if File.exist?(full_path) end nil end # Holds hooks that are called before and after #cycle and #safe_load module Hooks # Overwrite to add actions before the reload rotation is started. def before_cycle; end # Overwrite to add actions after the reload rotation has ended. def after_cycle; end # Overwrite to add actions before a file is Kernel::load-ed def before_safe_load(file) Log.debug("reload #{file}") end # Overwrite to add actions after a file is Kernel::load-ed successfully, # by default we clean the Cache for compiled templates and resolved # actions. def after_safe_load_succeed(file) Cache.clear_after_reload after_safe_load(file) end # Overwrite to add custom hook in addition to default Cache cleaning def after_safe_load(file) end # Overwrite to add actions after a file is Kernel::load-ed unsuccessfully, # by default we output an error-message with the exception. def after_safe_load_failed(file, error) Log.error(error) end end # Hooks include Hooks end # Reloader end # Ramaze ramaze-2012.12.08/lib/ramaze/log.rb0000644000004100000410000000155012140566653016562 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'ramaze/log/logging' require 'ramaze/log/informer' begin require 'win32console' if RUBY_PLATFORM =~ /win32/i && RUBY_VERSION < '1.9' rescue LoadError => ex puts ex puts "For nice colors on windows, please `gem install win32console`" Ramaze::Logger::Informer.trait[:colorize] = false end module Ramaze Log = Innate::Log ## # Module used as the base namespace for all loggers that ship with Ramaze. # # @author Michael Fellinger # @since 11-08-2009 # module Logger autoload :LogHub , 'ramaze/log/hub' autoload :RotatingInformer, 'ramaze/log/rotatinginformer' autoload :Syslog , 'ramaze/log/syslog' autoload :Logger , 'ramaze/log/logger' end end ramaze-2012.12.08/lib/ramaze/view/0000755000004100000410000000000012140566653016425 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/view/erubis.rb0000644000004100000410000000142612140566653020246 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'erubis' module Ramaze module View ## # View adapter for the Erubis template engine. More information about Erubis # can be found here: http://www.kuwata-lab.com/erubis/ # module Erubis OPTIONS = { :engine => ::Erubis::Eruby } def self.call(action, string) options = OPTIONS.dup engine = options.delete(:engine) eruby = View.compile(string){|s| engine.new(s, options) } eruby.init_evaluator(:filename => (action.view || __FILE__)) html = eruby.evaluate(action.instance) return html, 'text/html' end end # Erubis end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/view/remarkably.rb0000644000004100000410000000072712140566653021111 0ustar www-datawww-datarequire 'remarkably' require 'remarkably/engines/html' module Ramaze module View module Remarkably def self.call(action, string) string = transform_string(action, string) if action.view html = string.to_s return html, 'text/html' end def self.transform_string(action, string) action.instance.instance_eval do args = action.params instance_eval(string) end end end end end ramaze-2012.12.08/lib/ramaze/view/nagoro/0000755000004100000410000000000012140566653017712 5ustar www-datawww-dataramaze-2012.12.08/lib/ramaze/view/nagoro/render_partial.rb0000644000004100000410000000146412140566653023237 0ustar www-datawww-datarequire 'innate/helper/render' module Nagoro module Pipe # Pipe that transforms tags. # # the src parameter in the render tag will be used as first parameter to # render_partial, all other paramters are passed on as +variables+. # # Example calling render_partial('hello'): # # # Example calling render_partial('hello', 'tail' => 'foo'): # # class RenderPartial < Base include Innate::Helper::Render def tag_start(tag, attrs) if tag == 'render' and action_name = attrs.delete('src') append(render_partial(action_name, attrs)) else super end end def tag_end(tag) super unless tag == 'render' end end end end ramaze-2012.12.08/lib/ramaze/view/mustache.rb0000644000004100000410000000244612140566653020571 0ustar www-datawww-datarequire 'mustache' module Ramaze module View # Binding to Mustache templating engine. # # Mustache uses user-defined class for rendering. Ramaze overwrites value, # if controller defined same name variable as method that class defined. # # @see http://github.com/defunkt/mustache module Mustache class RamazeContext < ::Mustache::Context def escapeHTML(str) str.escape(:html) end end def self.call(action, string) context, path, ext = class_defined?(action) action.sync_variables(action) action.variables.each { |k, v| context[k.to_sym] = v } view = View.compile(string) { |s| ::Mustache::Template.new(s) } html = view.render(context) return html, 'text/html' end def self.class_defined?(action) return RamazeContext.new(nil), nil, nil unless action.view path = File.dirname(action.view) klass = if FileTest.exist?(File.join(path, "#{action.name}.rb")) require File.join(path, action.name) ::Object.const_get(::Mustache.classify(action.name)) # or eval? else ::Mustache end return RamazeContext.new(klass.new), path, View.exts_of(self).first end end # Mustache end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/view/haml.rb0000644000004100000410000000133012140566653017670 0ustar www-datawww-datarequire 'haml' require 'haml/util' require 'haml/engine' module Ramaze module View ## # View adapter that allows views to use Haml, for more information see the # following website: http://haml-lang.com/ # module Haml def self.call(action, string) options = action.options if haml_options = action.instance.ancestral_trait[:haml_options] options = options.merge(haml_options) end action.options[:filename] = (action.view || '(haml)') haml = View.compile(string){|s| ::Haml::Engine.new(s, options) } html = haml.to_html(action.instance, action.variables) return html, 'text/html' end end # Haml end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/view/erector.rb0000644000004100000410000001107412140566653020420 0ustar www-datawww-datarequire 'erector' module Ramaze module View ## # Adapter for Erector. Erector is a view engine that works a bit like # Markably but offers a much more pleasant way of building your views. By # creating classes in plain ruby you can generate layouts and views without # having to write a single line of HTML. # # Each layout or view is a simple class that matches the filename. A layout # named "default.erector" would result in a class with the name "Default". # It's *very* important to know that you should ALWAYS extend # Ramaze::View::Erector. Without extending this class you won't be able to # use Erector at all. # # When working with the Erector adapter there are a few things you'll need # to know. First all your views and layouts should be classes as explained # earlier on. Each class should have at least a single method named # "content". This method is executed by Erector and the HTML it produces # will either be stored in the @content instance variable (if it's a view) # or sent to the browser if it's a layout. The @content variable can be # displayed by calling the rawtext() method and passing the variable as it's # parameter. # # Using helper methods, such as the render_* methods is also possible # although slightly different than you're used to. Due to the way the # Erector adapter works it isn't possible to directly call a helper method. # As a workaround you can access these methods from the "@controller" # instance variable. Don't forget to render the output of these helpers # using rawtext(). Feel free to submit any patches if you think you have a # better solution so that developers don't have to use the @controller # instance variable. # # @example # # This is the code for the layout # class Default < Erector::Widget # html do # head do # title 'Erector Layout' # end # # body do # rawtext @content # end # # end # end # # # And here's the view # class Index < Erector::Widget # def content # h2 'This is the view' # end # end # # # Render an extra view # class ExtraView < Erector::Widget # def content # rawtext @controller.render_view :some_extra_view # end # end # # @author Yorick Peterse # module Erector # Include the Erector gem. By doing this Erector views can extend the # Erector gem without causing any namespace errors. include ::Erector ## # The call method is called whenever a view is loaded. A view can either # be a layout or an actual view since they're treated the same way. First # the view is loaded, followed by the layout. # # @author Yorick Peterse # @param [Object] action Object containing a copy of the current Action # class data. # @param [String] string The content of the currently loaded layout. This # variable isn't used by the Erector adapter but is required since Ramaze # expects 2 parameters. Usually this string is used to inline load (or # evaluate) the content of a view. # @return [String] The generated HTML. # def self.call action, string # Return the contents unless a view has been defined return string, 'text/html' unless action.view # Evaluate the class so we can use it. The content of "string" # is a full blown class that should always have a "content" method. #eval string, action.binding eval string # Generate the class name based on the filename. # Class names are a CamelCased version of the filename (without the # extension). klass = File.basename action.view, '.erector' klass = klass.camel_case view_obj = self.const_get(klass) # Synchronize the methods of action.instance with the view. These # methods can be accessed by calling @controller.METHOD action.variables[:controller] = action.instance # Now that we have all the data we can start rendering the HTML. # Note that we pass the action.variables hash to the new() method. This # is done to give the view access to all existing (instance) variables. # Syncing them using action.copy_variables didn't seem to do the trick. html = view_obj.new(action.variables).to_html # All done return html, 'text/html' end end # Erector end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/view/ezamar.rb0000644000004100000410000000132412140566653020231 0ustar www-datawww-datarequire 'ezamar' module Ramaze module View ## # View adapter for the Ezamar template engine. More information about this # engine can be found here: https://github.com/manveru/ezamar # module Ezamar TRANSFORM_PIPELINE = [ ::Ezamar::Element ] def self.call(action, string) ezamar = View.compile(string){|s| compile(action, s) } html = ezamar.result(action.binding) return html, 'text/html' end def self.compile(action, template) file = action.view || __FILE__ TRANSFORM_PIPELINE.each{|tp| template = tp.transform(template) } ::Ezamar::Template.new(template, :file => file) end end # Ezamar end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/view/tenjin.rb0000644000004100000410000000146512140566653020247 0ustar www-datawww-datarequire 'tenjin' module Ramaze module View module Tenjin def self.call(action, string) tenjin = View.compile(string){|s| template = ::Tenjin::Template.new template.convert(s) template } html = tenjin.ramaze_render(action.binding) return html, 'text/html' end end end end module Tenjin class Template # This method allows us to use tenjin with a binding, so helper methods are # available instead of only instance variables. # The big issue with this approach is that the original # Tenjin::ContextHelper is not available here. Patches welcome. def ramaze_render(binding) code = "_buf = #{init_buf_expr}; #{@script}; _buf.to_s" _buf = eval(code, binding, @filename || '(tenjin)') end end end ramaze-2012.12.08/lib/ramaze/view/gestalt.rb0000644000004100000410000000074412140566653020422 0ustar www-datawww-datarequire 'ramaze/gestalt' module Ramaze module View ## # View adapter that allows you to use Ramaze::Gestalt in your views. See the # documentation of Ramaze::Gestalt for more information. # # @see Ramaze::Gestalt # module Gestalt def self.call(action, string) string = action.instance.instance_eval(string) if action.view html = [string].join return html, 'text/html' end end # Gestalt end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/view/sass.rb0000644000004100000410000000071212140566653017723 0ustar www-datawww-datarequire 'haml' require 'sass' require 'haml/util' module Ramaze module View module Sass def self.call(action, string) options = action.options if sass_options = action.instance.ancestral_trait[:sass_options] options = options.merge(sass_options) end sass = View.compile(string){|s| ::Sass::Engine.new(s, options) } css = sass.to_css return css, 'text/css' end end end end ramaze-2012.12.08/lib/ramaze/view/liquid.rb0000644000004100000410000000770212140566653020247 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. require 'liquid' module Ramaze module View # Liquid is a smarty-style templating engine that restricts the usage of # code inside templates. This is mostly helpful if you want to let users # submit templates but prevent them from running arbitrary code. # # Liquid offers a pipe-like syntax for chaining operations on objects. # Any instance variable from your Controller is available as a variable # inside Liquid, so be sensitive about what data you provide. # # If you want to allow partials you can provide a kind of virtual # filesystem that contains partials. These can be rendered using the # Liquid `{% include 'name' %}` tag. The include tag has no relation to the # Ramaze::Helper::Render, it simply inlines the file. # # To tell Liquid where to find partials, you have to set the file_system. # The naming-convention for liquid-partials is to use a '_' prefix to the # filename and the '.liquid' filename extension. The names of partials # are restricted to ASCII alpha-numeric characters and underscores. You # can also use '/' to use templates located in deeper directories. # The partial has access to the same variables as the template including # it. # # @example setting file_system # template_path = './partials/' # Liquid::Template.file_system = Liquid::LocalFileSystem.new(template_path) # # @example using include # {% include 'foo' %} # {% include 'bar/foo' %} # # This will include the files located at './partials/_foo.liquid' and # './partials/bar/_foo.liquid'. # # This functionality gets even more interesting if you customize it with # your own virtual file-system, you can use anything that responds to # `#read_template_file(path)`. # That way you can even fetch templates from a database or instruct Liquid # to allow you access to your own templates in the '/views' directory. module Liquid # Liquid requires the variable keys to be strings, most likely for # security resons (don't allow arbitrary symbols). def self.call(action, string) action.sync_variables(action) variables = {} action.variables.each{|k,v| variables[k.to_s] = v } liquid = View.compile(string){|s| ::Liquid::Template.parse(s) } html = liquid.render(variables) return html, 'text/html' end class Tag < ::Liquid::Tag def initialize(tag_name, arg, tokens) super @arg = arg.strip end end # Liquid has intentionally? no support for binding, in order to use # helpers you have to register them as tags. # # Creating a tag needs boilerplate, so we reduce that for your # convenience. # # This is not the most performant way, it seems like Liquid uses # initialize to compile templates and gives you the chance to process the # arguments to the tag only once, but if you want that please contribute. # # Further below are a couple of tags that map to the most common helpers, # this also needs contribution as I simply don't have the time to write # all of that and invent a consistent syntax. def self.register_tag(name, helper, &block) klass = Class.new(Tag) klass.send(:include, helper) klass.send(:define_method, :render, &block) ::Liquid::Template.register_tag(name, klass) end # {% route index %} register_tag('route', Ramaze::Helper::Link) do |context| Ramaze::Current.action.node.route(@arg) end # {% anchor "The index" index %} register_tag('anchor', Ramaze::Helper::Link) do |context| @arg =~ /^(['"])(.*?)\1\s+(.*)/ Ramaze::Current.action.node.anchor($2, $3) end end # Liquid end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/view/nagoro.rb0000644000004100000410000000212612140566653020240 0ustar www-datawww-datarequire 'nagoro' require 'ramaze/view/nagoro/render_partial' module Ramaze module View # Binding to the Nagoro templating engine. # # To pipe your template through tidy you have to use: # # Ramaze::View::Nagoro.options.tidy = true # # @see http://github.com/manveru/nagoro module Nagoro include Optioned options.dsl do o "Pipes to pass the template through", :pipes, ::Nagoro::DEFAULT_PIPES o "Use tidy to cleanup the rendered template", :tidy, false end def self.call(action, string) default_options = { :pipes => options.pipes, :filename => action.view, :binding => action.binding, :variables => action.variables } render_options = default_options.merge(action.options) if options.tidy html = ::Nagoro.tidy_render(string.to_s, render_options) else html = ::Nagoro.render(string.to_s, render_options) end return html, 'text/html' end end # Nagoro end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/view/slippers.rb0000644000004100000410000000306312140566653020615 0ustar www-datawww-datarequire 'slippers' module Ramaze module View ## # View adapter for Slippers, see the website of Slippers for more # information: http://starapor.github.com/slippers/ # # module Slippers def self.call(action, string) slippers = View.compile(string) do |s| ::Slippers::Engine.new(s, :template_group => template_group(action)) end object_to_render = ::Slippers::BindingWrapper.new(action.instance.binding) html = slippers.render(object_to_render) return html, 'text/html' end private def self.template_group(action) subtemplates = action.instance.ancestral_trait[:slippers_options] || {} missing_template_handler = action.instance.ancestral_trait[ :slippers_missing_template_handler ] default_string = action.instance.ancestral_trait[ :slippers_default_string ] views = action.instance.options[:views].map do |view| "#{action.instance.options[:roots]}/#{view}" end super_group = ::Slippers::TemplateGroup.new( :templates => subtemplates, :missing_template_handler => missing_template_handler, :default_string => default_string ) ::Slippers::TemplateGroupDirectory.new( views, :super_group => super_group, :missing_template_handler => missing_template_handler, :default_string => default_string ) end end # Slippers end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/view/slim.rb0000644000004100000410000000212712140566653017720 0ustar www-datawww-datarequire 'slim' module Innate module View ## # View adapter for the Slim template engine. For more information about Slim # see the following page: https://github.com/stonean/slim # # @example # class MainController < Ramaze::Controller # map '/' # engine :slim # # def index # # Create some data for the view and render it. # end # end # # @since 19-01-2012 # module Slim ## # Compiles the view and returns the HTML and mime type. # # @since 19-01-2012 # @param [Innate::Action] action The action for which to compile/render # the view. # @param [String] string The content of the view. # @return [Array] The HTML and MIME type. # def self.call(action, string) filename = action.view || action.method slim = View.compile(string) do |str| ::Slim::Template.new(filename) { str } end html = slim.render(action.instance) return html, Response.mime_type end end # Slim end # View end # Innate ramaze-2012.12.08/lib/ramaze/view/tagz.rb0000644000004100000410000000263612140566653017726 0ustar www-datawww-datarequire 'tagz' module Ramaze module View module Tagz def self.call(action, string) return string, 'text/html' unless action.view markup = "tagz{#{string}}" action.instance.extend(Ramaze::View::Tagz::Methods) binding = action.binding html = eval(markup, binding, action.view) return html, 'text/html' end # A host of methods useful inside the context of a view including print # style methods that output content rather that printing to $stdout. module Methods include ::Tagz private def <<(s) tagz << s; self end def concat(*a) a.each{|s| tagz << s}; self end def puts(*a) a.each{|elem| tagz << "#{ elem.to_s.chomp }#{ eol }"} end def print(*a) a.each{|elem| tagz << elem} end def p(*a) a.each do |elem| tagz << "#{ Rack::Utils.escape_html elem.inspect }#{ eol }" end end def pp(*a) a.each do |elem| tagz << "#{ Rack::Utils.escape_html PP.pp(elem, '') }#{ eol }" end end def eol if response.content_type =~ %r|text/plain|io "\n" else "
" end end def __(*a) concat eol end end end # Tagz end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/view/lokar.rb0000644000004100000410000000075112140566653020065 0ustar www-datawww-datarequire 'lokar' module Ramaze module View ## # Allows views to use Lokar as the template engine. See the following # website for more information: https://github.com/Zoxc/Lokar # module Lokar def self.call(action, string) compiled = View.compile(string){|s| ::Lokar.compile(s, action.view || __FILE__) } html = action.instance.instance_eval(&compiled).join return html, 'text/html' end end # Helper end # View end # Ramaze ramaze-2012.12.08/lib/ramaze/files.rb0000644000004100000410000000267112140566653017110 0ustar www-datawww-datamodule Ramaze ## # Class that makes it possible to easily use multiple public directories in # your Ramaze application. # # @author Michael Fellinger # @since 14-03-2009 # class Files ## # Creates a new instance of the class, stores the given root directories # and syncs the changes with Rack::Cascade. # # @author Michael Fellinger # @since 14-03-2009 # @param [Array] roots A set of root directories that contain a number of # public directories. # def initialize(*roots) @roots = roots.flatten.map{|root| File.expand_path(root.to_s) } sync end ## # Allows this class to be called as a Rack middleware. # # @author Michael Fellinger # @since 14-03-2009 # @param [Hash] env Hash containing all the environment details. # def call(env) @cascade.call(env) end ## # Adds a new path to the list of root directories. # # @author Michael Fellinger # @since 14-03-2009 # @param [String] path The path to add to the existing root directories. # def <<(path) @roots << File.expand_path(path.to_s) @roots.uniq! sync end ## # Syncs the class with Rack::Cascade. # # @author Michael Fellinger # @since 14-03-2009 # def sync file_apps = @roots.map { |root| Rack::File.new(root) } @cascade = Rack::Cascade.new(file_apps) end end # Files end # Ramaze ramaze-2012.12.08/lib/ramaze.rb0000644000004100000410000000416512140566653016006 0ustar www-datawww-data# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the MIT license. # Namespace for Ramaze # # THINK: # * for now, we don't extend this with Innate to keep things clean. But we # should eventually do it for a simple API, or people always have to find # out whether something is in Innate or Ramaze. # No matter which way we go, we should keep references point to the # original location to avoid too much confusion for core developers. module Ramaze ROOT = File.expand_path(File.dirname(__FILE__)) unless defined?(Ramaze::ROOT) # 3rd party require 'innate' @options = Innate.options class << self; attr_accessor :options; end unless $LOAD_PATH.any?{|lp| File.expand_path(lp) == ROOT } $LOAD_PATH.unshift(ROOT) end extend Innate::SingletonMethods # vendored, will go into rack-contrib require 'vendor/route_exceptions' # Ramaze itself require 'ramaze/version' require 'ramaze/log' require 'ramaze/snippets' require 'ramaze/helper' require 'ramaze/view' require 'ramaze/controller' require 'ramaze/cache' require 'ramaze/reloader' require 'ramaze/app' require 'ramaze/files' require 'ramaze/request' require 'ramaze/current' # Usually it's just mental overhead to remember which module has which # constant, so we just assign them here as well. # This will not affect any of the module functions on Innate, you still have # to reference the correct module for them. # We do not set constants already set from the requires above. Innate.constants.each do |const| begin Ramaze.const_get(const) rescue NameError Ramaze.const_set(const, Innate.const_get(const)) end end ## # @see Innate.core # def self.core roots, publics = options[:roots], options[:publics] joined = roots.map { |r| publics.map { |p| File.join(r, p) } } joined = joined.flatten.map { |p| Rack::File.new(p) } current = Current.new(Route.new(AppMap), Rewrite.new(AppMap)) return Rack::Cascade.new(joined << current, [404, 405]) end require 'ramaze/default_middleware' end ramaze-2012.12.08/.rvmrc0000644000004100000410000000012212140566653014553 0ustar www-datawww-datarvm --install --create use 1.9.3@ramaze [[ -s .gems ]] && rvm gemset import .gems