All Projects â†’ artichoke â†’ Ferrocarril

artichoke / Ferrocarril

Licence: mit
🚆 Experiments to embed Ruby on Rails in Rust with mruby

Programming Languages

ruby
36898 projects - #4 most used programming language
rust
11053 projects

Projects that are alternatives of or similar to Ferrocarril

serverless-rack
Serverless plugin to deploy Ruby Rack applications (Sinatra/Rails/Padrino/Cuba etc.) and bundle gems
Stars: ✭ 58 (-12.12%)
Mutual labels:  rack, sinatra
Sham rack
run Rack applications in-process, without a server
Stars: ✭ 169 (+156.06%)
Mutual labels:  sinatra, rack
Sinatra
Classy web-development dressed in a DSL (official / canonical repo)
Stars: ✭ 11,497 (+17319.7%)
Mutual labels:  sinatra, rack
Rack Reducer
Declaratively filter data via URL params, in any Rack app, with any ORM.
Stars: ✭ 241 (+265.15%)
Mutual labels:  sinatra, rack
encrypted cookie
AES-128 encrypted session cookies for Rack (and Sinatra and other frameworks).
Stars: ✭ 54 (-18.18%)
Mutual labels:  rack, sinatra
rack-cargo
🚚 Batch requests for Rack apps (works with Rails, Sinatra, etc)
Stars: ✭ 17 (-74.24%)
Mutual labels:  rack, sinatra
Bugsnag Ruby
Bugsnag error monitoring & reporting software for rails, sinatra, rack and ruby
Stars: ✭ 211 (+219.7%)
Mutual labels:  sinatra, rack
rack-simple user agent
Rack::SimpleUserAgent is stupidly simple UA detector
Stars: ✭ 13 (-80.3%)
Mutual labels:  rack, sinatra
Async sinatra
A plugin for Sinatra to provide a DSL extension for using Thin for asynchronous responses
Stars: ✭ 434 (+557.58%)
Mutual labels:  sinatra, rack
Jekyll Auth
A simple way to use GitHub OAuth to serve a protected Jekyll site to your GitHub organization
Stars: ✭ 778 (+1078.79%)
Mutual labels:  sinatra
Cve Api
Unofficial api for cve.mitre.org
Stars: ✭ 36 (-45.45%)
Mutual labels:  sinatra
Agoo
A High Performance HTTP Server for Ruby
Stars: ✭ 679 (+928.79%)
Mutual labels:  rack
Treestats.net
Player tracking for Asheron's Call
Stars: ✭ 5 (-92.42%)
Mutual labels:  sinatra
Redis Rack
Redis session store for Rack
Stars: ✭ 46 (-30.3%)
Mutual labels:  rack
Iodine
iodine - HTTP / WebSockets Server for Ruby with Pub/Sub support
Stars: ✭ 720 (+990.91%)
Mutual labels:  rack
Health bit
Tiny health check of Rack apps like Rails, Sinatra for use with uptime checking systems like Kubernetes, Docker or Uptimerobot
Stars: ✭ 60 (-9.09%)
Mutual labels:  rack
Will paginate
Pagination library for Rails, Sinatra, Merb, DataMapper, and more
Stars: ✭ 5,621 (+8416.67%)
Mutual labels:  sinatra
Dawnscanner
Dawn is a static analysis security scanner for ruby written web applications. It supports Sinatra, Padrino and Ruby on Rails frameworks.
Stars: ✭ 642 (+872.73%)
Mutual labels:  sinatra
Rack Host Redirect
Rack middleware to redirect legacy domains
Stars: ✭ 64 (-3.03%)
Mutual labels:  rack
Letsencrypt heroku
Automated letsencrypt setup for heroku
Stars: ✭ 58 (-12.12%)
Mutual labels:  rack

ferrocarril

CircleCI

Archived: ferrocarril has been superseded by Artichoke.

ferrocarril aims to embed a Ruby on Rails web application that talks to an external MySQL database in Rust and serve the app with Rocket.

ferrocarril means railway in Spanish and sounds like ferrous which means containing iron.

hubris

The hubris crate runs a Sinatra::Base echo server with Nemesis.

Usage

HUBRIS_LOG=info cargo run --bin hubris

Then, open http://localhost:8000 on your browser.

Features

  • Utilizes a Rust implenentation of Regexp and MatchData.
  • Utilizes a stack-based synchronous implementation of Thread.
  • Utilizes a complete implementation of Ruby 2.6.3 String API that uses a hybrid of mruby C, Ruby, and Rust.
  • Utilizes implementations of Ruby standard library packages customized for mruby, including delegate, forwardable, json, monitor, ostruct, set, strscan, and uri.
  • Utilizes patched versions of Sinatra and its dependencies.

foolsgold

The foolsgold crate is an early attempt to achieve the goal of a Rust-backed Ruby web application.

Usage

FOOLSGOLD_LOG=info cargo run --bin foolsgold

Then, open http://localhost:8000 on your browser.

Features

REPL

Crate mruby-bin provides an rirb executable that is an IRB shell and REPL for the mruby interpreter in this workspace. rirb aims to load every extension to mruby made by this workspace in addition to all gems in the gems crate.

Usage

cargo run --bin rirb

Contributing

There is a lot to build! If you'd like to help out, take a look at the open issues. Tickets that are tagged with good first issue might be a good introduction to the codebase.

Setup

A ferrocarril development environment has several dependencies. Setup your development environment.

Code Overview

To familiarize yourself with the code in this workspace, consider reviewing these source files:

File Purpose Learning Objective
manual.rs mruby crate integration test Define Rust-backed Ruby sources
extn::regexp Regexp implementation Implement a Ruby Core class with a mix of Rust and Ruby
nemesis.rs nemesis crate Ruby runtime Define a Gem
ffi_tests.rs C API test suite Manipulate an interpreter with the C API
repl.rs REPL loop for rirb Eval code on an interpreter and handle errors

Known Missing Features

Core

mruby does not implement all Ruby 2.6 core classes.

Required classes include (at least):

  • File
  • IO
  • Regexp

Standard Library

mruby does not implement any of the Ruby 2.6 standard library.

See the stdlib tracking ticket (GH-8) for more details.

Gems

Rails requires lots of gems. This workspace maintains a registry of vendored gems. To support the goal of running Rails, this crate identifies dependencies, vendors the gem sources, patches gems so they parse on mruby, reimplements C extensions in Rust, and runs the tests for each gem.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].