Need help with onotole?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

kvokka
128 Stars 8 Forks MIT License 110 Commits 0 Opened issues

Description

Rails project generator, which will cut all starting routine in maximum flexible mode

Services available

!
?

Need anything else?

Contributors list

No Data

Code Climate

Onotole & Rails 5

New Rails project wizard. Onotole will help!

Onotole

Read more ENG | RUS | RUS lurk

About

Fork from thoughtbot/suspenders(https://github.com/thoughtbot/suspenders) implemented function of user choice gems installation with all their settings, so you can use fully working application with everything needed installed and configured from the box. Cut

Bitters
as default choice.

As default uses the latest Ruby version and Rails '~> 5.0.0'

This user gem pack is available for custom installation (you will only choose what you need) all of this will be available in the customization menu with

-c
flag usage (no default selected gems will be installed), otherwise default gem list will be installed. Gems with
*
mark will be installed as addition like default, if starting
onotole
without
-c
flag. You can provide automatic installation with options, like
--haml
. Default pack will not be installed with any gem option.

I begin collecting some goodies where some patches and tweaks will be placed in, for easier getting into and using it with already started projects.

At this monent, I found unworking this gems: * ActiveAdmin * WillPaginane

I hope Rails 5 support willl be added there soon, or you may easyly find monkey patches for fixes. Feel free to edit this list.

Flexible gem group

Frontend frameworks

Template engines

  • *
    slim Slim is a template language which goal to reduce the syntax to the essential parts without becoming cryptic. http://slim-lang.com
  • html2slim HTML2SLIM utility, installs with slim
  • haml HTML Abstraction Markup Language - A Markup Haiku http://haml.info

Authenticate engines

CMS engines & DB viewers

  • rails_admin Rails engine that provides an easy-to-use interface for managing your data
  • activeadmin Rails framework for creating elegant backends for website administration.
  • typus Ruby on Rails control panel to allow trusted users edit structured content. http://docs.typuscmf.com
  • rails_db Rails Database Viewer and SQL Query Runner https://youtu.be/TYsRxXRFp1g
ActiveAdmin plug-ins

Pagination

WYSIWYG

  • ckeditor CKEditor is a WYSIWYG text editor designed to simplify web content creation.
  • tinymce-rails Integration of TinyMCE with the Rails asset pipeline

#### Memory DB * redis A Ruby client library for Redis. * redis-rails Provides a full set of stores (Cache, Session, HTTP Cache) for Ruby on Rails * redis-namespace Provides an interface to a namespaced subset of your redis keyspace (e.g., keys with a common beginning).

File storage

  • carrierwave Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks https://github.com/carrierwaveuploader/carrierwave

Developer tools

  • Airbrake For exception notification
  • bundler_audit Patch-level verification for Bundler
  • *
    faker A library for generating fake data such as names, addresses, and phone numbers.
  • *
    guard Guard is a command line tool to easily handle events on file system modifications. http://guardgem.org
  • guard_rubocop Guard plugin for RuboCop
  • *
    meta_request Supporting gem for Rails Panel (Google Chrome extension for Rails development).
  • *
    rubocop A Ruby static code analyzer, based on the community Ruby style guide.
  • *
    annotate Annotate Rails classes with schema and routes info
  • *
    overcommit A fully configurable and extendable Git hook manager
  • *
    rubycritic A Ruby code quality reporter
  • railroady Model and controller UML class diagram generator. Originally based on the "railroad" plugin
  • hirb-unicode Unicode support for hirb
  • dotenv-heroku Addition for quick variables export to heroku
  • image_optim Optimize (lossless compress, optionally lossy) images (jpeg, png, gif, svg) using external utilities
  • mailcatcher Catches mail and serves it through a dream. http://mailcatcher.me
  • *
    rack-mini-profiler Middleware that displays speed badge for every html page. Designed to work both in production and in development.
  • flamegraph Flamegraph profiling support (awesome performance graphics)
  • stackprof A sampling call-stack profiler for ruby 2.1+
  • activerecorddoctor Active Record Doctor helps to index unindexed foreign keys
  • git_up Fetch and rebase all locally-tracked remote branches

Misc

  • activerecord_import Activerecord-import is a library for bulk inserting data using ActiveRecord.
  • *
    responders A set of responders modules to dry up your Rails 4.2+ app.
  • paper_trail Track changes to your models' data. Good for auditing or versioning.
  • validates_timeliness Date and time validation plugin for ActiveModel and Rails. Supports multiple ORMs and allows custom date/time formats.
  • font-awesome-sass Font-Awesome Sass gem for use in Ruby/Rails projects
  • cyrillizer Character conversion from latin to cyrillic and vice versa
  • fotoramajs Fotorama JS gallery for Ruby on Rails http://fotorama.io/
  • rack-cors Rack Middleware for handling Cross-Origin Resource Sharing (CORS), which makes cross-origin AJAX possible.
  • newrelic_rpm for monitoring performance
  • invisible_captcha Unobtrusive and flexible spam protection for RoR apps
  • therubyracer Embed the V8 Javascript Interpreter into Ruby
XLS & PDF
  • axslx Xlsx generation with charts, images, automated column width, customizable styles and full schema validation.
  • axlsx_rails A Rails plug-in to provide templates for the axlsx gem for providing Excel files format support
  • prawn Fast, Nimble PDF Writer for Ruby http://prawnpdf.org
  • prawn-table Provides support for tables in Prawn
Geolocation
  • geocoder Complete Ruby geocoding solution. http://www.rubygeocoder.com
  • Gmaps4rails Enables easy Google map + overlays creation in Ruby apps http://apneadiving.github.io/

Mandatory installation gem list you will find in

Gemfile
section of this readme

Installation

First install the onotole gem add this in

Gemfile
and
bundle
    group :development do
      gem 'onotole', require: false
    end

or

gem install onotole

Then run:

onotole projectname [ -c ] [ * rails_genetator_flags ]

There are 2 main ways of using: 1.

onotole projectname
will generate project with default mandatory gems and default flexible gems 2.
onotole projectname -c
will generate project with mandatory gems and will provide a menu for gem selection, where you will need to choose all options.

Of course you are free to add standard

rails new
flags, inasmuch as Onotole based on standard rails generator

And command like this will add some magic

onotole app  * github organization/project * heroku true

This will provide a dialog, where you can select needed gems, also you can add it with gemname flag, after app_name, like

onotole projectname --slim
. List of gems you always can get with
onotole --gems
command. Also,
onotole --help
can be useful.

*NB: if you install custom gems, default user gem pack will not be installed.

Gemfile

To see the latest and greatest gems, look at Onotole' Gemfile, which will be appended to the default generated projectname/Gemfile. This gem will be installed anyway.

Mandatory gem group

And development gems like:

  • Dotenv for loading environment variables
  • Pry Rails for interactively exploring objects
  • Hirb for pretty tables view in the console
  • Awesome_print Pretty print your Ruby objects with style -- in full color and with proper indentation
  • ByeBug for interactively debugging behavior
  • Bullet for help to kill N+1 queries and unused eager loading
  • Spring for fast Rails actions via pre-loading
  • Web Console for better debugging via in-browser IRB consoles.
  • Quiet Assets for muting assets pipeline log messages
  • Better_errors Better error page for Rack apps
  • Bindingofcaller Retrieve the binding of a method's caller in MRI 1.9.2+

And testing gems like:

ENV Variables

All variables are stored in

.env
file and calls with project name prefix. It made for avoid name space problems with placing more than 1 of Onotole created app on 1 server. Onotole prefix all
env
variables with
#{app_name}
and now you will not have any problems with export variables in production. In production environment you can make
.env.production
file and put all consants there. Also with this thick you can easy use ENV export tool or just put ENV variables in
.bashrc
without name space conflicts.

NOSQL Memory based db

Now supported only Redis db, and Onotole do not install or config Redis itself, it just setup support gems. For getting access to Redis you can use

$redis
variable, and
$ns_redis
for namespaced access wich is provided by
redis-namespace
gem. Feel free in changing settings in
config/initializers/redis.rb

Other goodies

Onotole also comes with:

  • The [
    ./bin/setup
    ][setup] convention for new developer setup
  • Rails' flashes set up and in application layout
  • A few nice time formats set up for localization
  • Rack::Deflater
    to [compress responses with Gzip][compress]
  • A [low database connection pool limit][pool]
  • [Safe binstubs][binstub]
  • [t() and l() in specs without prefixing with I18n][i18n]
  • An automatically-created
    #{APP_NAME}_SECRET_KEY_BASE
    environment variable in all environments
  • The analytics adapter [Segment]segment
  • Check existing of app DB and ask about continuation if base persisted
  • Added style flash messagaes for
    bootstrap-sass
    gem
  • Auto add gem
    devise_bootstrap_views
    when
    bootstrap-sass
    and
    devise
    selected for pretty view from the box
  • Added autoload js and scss from
    vendor/assets/javascripts
    and
    vendor/assets/stylesheets
  • Added autoload fonts from
    app/assets/fonts/**/*
  • Patch for no error work, if
    Mailcatcher
    is not loaded. In this case
    delivery_method = :file
    . It checks on the
    rails server
    starts.
  • No need to add
    rails_helper
    or
    spec_helper
    in specs.
  • In
    .env
    just switch on
    #{app_name}_COVERAGE
    to true and get your test coverage.
  • Added
    kaminari-i18n
    installation with
    ActiveAdmin
    or
    kaminari
    gem
  • Moved asset gems in assets group in Gemfile
  • Disable logging and deferred garbage collecting gives up 20% test speed improvement
  • Rake task for killing PostgreSQL conventions
    db:kill_postgres_connections
  • Rake task
    redis:flushall
  • Made seeds organization for easy splitting data from scratch
  • Carrierwave
    may be integrated with
    mini_magick
    and
    ckeditor
    , depend on user choice
  • Ability to use
    AbstractModel
    for easy code extension
  • Custom FormBuilder initial setup

Heroku

You can optionally create Heroku staging and production apps:

onotole app  * heroku true

This:

  • Creates a staging and production Heroku app
  • Sets them as
    staging
    and
    production
    Git remotes
  • Configures staging with
    RACK_ENV
    environment variable set to
    staging
  • Adds the Rails Stdout Logging gem to configure the app to log to standard out, which is how Heroku's logging works.
  • Creates a Heroku Pipeline for review apps

You can optionally specify alternate Heroku flags:

onotole app \
   * heroku true \
   * heroku-flags " * region eu  * addons newrelic,sendgrid,ssl"

See all possible Heroku flags:

heroku help create

Git

This will initialize a new git repository for your Rails app. You can bypass this with the

* skip-git
option:
onotole app  * skip-git true

GitHub auto repository create

You can optionally create a GitHub repository for the suspended Rails app. It requires that you have Hub on your system:

curl http://hub.github.com/standalone -sLo ~/bin/hub && chmod +x ~/bin/hub
onotole app  * github organization/project

This has the same effect as running:

hub create organization/project

Spring

Onotole uses spring by default. It makes Rails applications load faster, but it might introduce confusing issues around stale code not being refreshed. If you think your application is running old code, run

spring stop
. And if you'd rather not use spring, add
DISABLE_SPRING=1
to your login file.

Dependencies

Onotole requires the latest version of Ruby.

Some gems included in Onotole have native extensions. You should have GCC installed on your machine before generating an app with Onotole.

Use OS X GCC Installer for Snow Leopard (OS X 10.6).

Use Command Line Tools for XCode for Lion (OS X 10.7) or Mountain Lion (OS X 10.8).

We use Capybara Webkit for full-stack JavaScript integration testing. It requires QT. Instructions for installing QT are here.

PostgreSQL needs to be installed and running for the

db:create
rake task. Also DB existing checking in
PostgreSQL
only.

Contributing

If you want to get your gem in Onotole follow this steps

  1. Clone this repository
  2. If you need to add new question in menu add it in UserGemsMenu
  3. Add your gem with description in
    EditMenuQuestions
    .
  4. Add per
    bundler
    hooks in
    BeforeBundlePatch
    . Use function name with this template
    add_awesome_gem
    where
    awesome
    is a gem name. Usually minimum is to add gem into
    Gemfile
    .
  5. Add after install hooks in
    AfterInstallPatch
    . Name your function
    after_install_awesome
    . Also, add it in query at
    #post_init
    . Other way it will not run
  6. Update README.MD
  7. Make PR

Please, do not change version or gems for default install. Appname

tmp
is preferred for develop. It already added to gitignore.

Keep in mind, that tests will need installed hub

If you find some misprints fell free to fix them.

Thank you!

Direct GitHub gem installation

Gems, which have been installed from github, with 'github:' option in

Gemfile.erb
will be automatically installed with
gem install
command. It made for making available support fresh fixes. If you do not need it, use 'git:' option with full gem trace.

License

MIT Licence

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.