Project

feet

0.0
No release in over a year
A more down to earth, hairy rails twin
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

>= 0
~> 2.2
 Project Readme

Ruby on Feet

Gem developed part of a study group on Rebuilding Rails by Noah Gibbs.

Ruby on Feet is a baby Rails-like MVC framework and replicates some of the main features of Rails (see Usage).

Installation

In your Rack application, add feet in your Gemfile:

gem 'feet'

And then run bundle install

Use Feet in your app. An example app:

# config/application.rb
require 'feet'
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'app',
                        'controllers')

module MyApp
  class Application < Feet::Application; end
end

Initialize the application in your rack config.ru.

# config.ru
require './config/application'

app = MyApp::Application.new

run app

After, start the rackup and see Feet's welcome page by navigating to /feet.

Usage

This project mocks different Rails features.

Check the generated documentation or here are some short examples of features you can use:

Routing

Map different routes to their controller action. Similar to Rails.

# config.ru
app.route do
    root 'home#index'

    match 'posts', 'posts#index'
    match 'posts/:id', 'posts#new_post', via: 'POST' # Use different HTTP verb with the `via` option
    match 'posts/:id', 'posts#show'

    # Get all the default resources with the `resource` method
    resource 'article'

    # Or just assign default routes
    match ":controller/:id/:action.(:type)?"
    match ':controller/:id/:action'
    match ':controller/:id',
            default: { 'action' => 'show' }

end

More RouteObject methods: https://www.rubydoc.info/gems/feet/Feet/RouteObject

Controllers
# app/controllers/posts_controller.rb
class PostsController < Feet::Controller
  def show
    render :show
  end

  def index
    render :index
  end
end
Views
# app/views/posts/show.html.erb
<h1><%= @post['title'] %></h1>
<p> <%= @post['body'] %></p>
FileModel (for building basic file-base models)
Create a directory to store the files. Each file will be a row on the DB

The number in the file name will be the id of that record

# db/posts/1.json
{
  "title": "Ruby on Feet",
  "body": "..."
}

Then use the FileModel to do CRUD operations

# app/controllers/post_controller.rb
def index
    @posts = FileModel.all
    render :index
end
SQLiteModel ORM

First, create and run a mini migration to initiate the DB (test.db) and create the table (my_table). Modify the DB and table name.

  # mini_migration.rb
  require 'sqlite3'

  conn = SQLite3::Database.new 'test.db'
  conn.execute <<~SQL
    create table my_table (
      id INTEGER PRIMARY KEY,
      posted INTEGER,
      title VARCHAR(30),
      body VARCHAR(32000)
    );
  SQL

Run the migration

$ ruby mini_migration.rb
# app/my_table.rb
require 'feet/sqlite_model'

class MyTable < Feet::Model::SQLiteModel; end

# You can add a seed method on MyTable
MyTable.class_eval do
  def self.seed
    MyTable.create "title" => "Ruby on Feet", "posted" => 1,"body" => "..."
  end
end

Then you can use MyTable in your controller to handle your DB operations

# app/controller/post_controller.rb
require_relative '../my_table'
class PostsController < Feet::Controller
    def show
      @post = MyTable.find(params['id'])
      render :show
    end
    def index
        @posts = MyTable.all
        render :index
    end
    def create
      @post = MyTable.seed
      render :show
    end
end

Check SQLiteModel methods: https://www.rubydoc.info/gems/feet/Feet/Model/SQLiteModel.

Development

After checking out the repo, run bin/setup to install dependencies. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Running gem build feet.gemspec will create a build file feet-VERSION.gem

Testing

The Minitest library was used for testing.

Rake::TestTask was configure to run the test suite. You can see a list of Rake commands with rake -T.

Run all tests with:

$ rake test

To run only one test, use:

$ rake test TEST=test/filename.rb

Currently, the following test files are available:

  • application_test.rb
  • utils_test.rb
  • file_model_test.rb
  • sqlite_model_test.rb
  • route_test.rb

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/panacotar/feet.

License

The gem is available as open source under the terms of the MIT License.