Sinator - Sinatra Application Generator
- Last modified atSinator merupakan generator web aplikasi yang menggunakan Sinatra yang saya gunakan untuk generate aplikasi.
Daftar Ruby Gems yang digunakan oleh Sinator ketika generate aplikasi:
- sinatra
- sinatra-contrib
- encrypted_cookie
Sinatra::Reloader
hanya untuk development- puma sebagai application server
Rack::Session::EncryptedCookie
Rack::Csrf
- sequel
- sequel_pg sebagai PostgreSQL adapter
- sprockets
- sass
- uglifier
- tux untuk console
Instalasi
Cara Penggunaan
generate app pada current directory tanpa database
generate app pada target directory tanpa database
generate app pada current directory dengan database. Opsi -d
akan membuat Sinator generate aplikasi dengan Sequel
ORM dan PostgreSQL adapter.
Contoh Aplikasi
Contoh aplikasi todo dapat dilihat melalui github.com/kuntoaji/todo_sinator.
Contoh Penggunaan
Contoh ini berasumsi PostgreSQL telah running dan database yang akan digunakan telah dibuat.
- run
sinator -n my_app -d
- cd
my_app
- run
bundle install
- Lakukan konfigurasi database pada
config/database.yml
Buat file
db/migrations/001_create_artists.rb
dan tulis kode berikut:Sequel.migration do up do create_table(:artists) do primary_key :id String :name, :null=>false end end down do drop_table(:artists) end end
- run
rake db:migrate
Buat file
app/models/Artist.rb
dan tulis kode berikut:class Artist < Sequel::Model end
Buat file
app/routes/artists.rb
dan tulis kode berikut:class MyApp get '/artists' do @artists = Artist.all erb :"artists/index" end post '/artists' do @artist = Artist.new @artist.name = params[:name] @artist.save redirect '/artists' end end
Buat file
app/views/artists/index.erb
dan tulis kode berikut:<h1>List of Artist</h1> <ul> <% @artists.each do |artist| %> <li><%= artist.name %></li> <% end %> </ul> <form action="/artists" method="post"> <%= Rack::Csrf.tag(env) %> <input type="text" name="name" /> <button>Submit</button> </form>
- run server
bundle exec puma
- buka url di browser
localhost:9292/artists
Production
Di production by default serve assets seperti Javascript dan CSS akan di-disable karena lebih baik melalui Nginx atau Apache. Untuk melakukan assets precompile dan running server di production dapat menggunakan perintah berikut:
Recent Posts
How to Defend Against Brute-Force and DoS Attacks with Fail2ban, Nginx limit_req, and iptables
In this tutorial, I’ll explain how to protect your public-facing Linux server and Nginx web server from common threats, including brute-force and DoS attacks.
Is Getting AWS Solutions Architect Associate Certification Worth It?
If you are a full-time Software Engineer, there's no strong need to pursue this certification.
DevSecOps
My Notes about DevSecOps
AWS Secrets Manager
Explanation about AWS Secrets Manager with example code.
Envelope Encryption
Envelope encryption is the practice of encrypting plaintext data with a data key, and then encrypting the data key under another key.