আমি যে সিনেট্রা অ্যাপ্লিকেশনগুলি ব্যবহার করি তার জন্য এখানে একটি প্রাথমিক টেম্পলেট is (আমার বৃহত্তর অ্যাপ্লিকেশনগুলিতে এই জাতীয় 200+ ফাইল বিচ্ছিন্ন হয়েছে, বিক্রেতাদের রত্নগুলি গণনা করা হচ্ছে না, 75-100 স্পষ্ট রুটগুলি আবরণ করা হয়। এর কয়েকটি রুটই অতিরিক্ত 50+ রুটের নিদর্শনগুলিকে আচ্ছাদন করে রেগএক্সপুট রুট।) পাতলা ব্যবহার করার সময়, আপনি একটি চালনা করেন এই মত অ্যাপ্লিকেশন ব্যবহার করে:
thin -R config.ru start
সম্পাদনা : আমি এখন নীচের নামক রিব্লিটগুলির ভিত্তিতে আমার নিজের সন্ন্যাসীর কঙ্কাল বজায় রাখছি । আপনার নিজস্ব প্রকল্পের ভিত্তি হিসাবে আমার টেম্পলেটটি অনুলিপি করতে এটি ব্যবহার করতে:
# Before creating your project
monk add riblits git://github.com/Phrogz/riblits.git
# Inside your empty project directory
monk init -s riblits
ফাইল লেআউট:
config.ru
app.rb
সাহায্যকারী /
init.rb
partials.rb
মডেল /
init.rb
user.rb
যাত্রাপথ /
init.rb
login.rb
main.rb
মতামত /
layout.haml
login.haml
main.haml
config.ru
root = ::File.dirname(__FILE__)
require ::File.join( root, 'app' )
run MyApp.new
app.rb
# encoding: utf-8
require 'sinatra'
require 'haml'
class MyApp < Sinatra::Application
enable :sessions
configure :production do
set :haml, { :ugly=>true }
set :clean_trace, true
end
configure :development do
# ...
end
helpers do
include Rack::Utils
alias_method :h, :escape_html
end
end
require_relative 'models/init'
require_relative 'helpers/init'
require_relative 'routes/init'
সাহায্যকারী / init.rb
# encoding: utf-8
require_relative 'partials'
MyApp.helpers PartialPartials
require_relative 'nicebytes'
MyApp.helpers NiceBytes
সাহায্যকারী / partials.rb
# encoding: utf-8
module PartialPartials
def spoof_request(uri,env_modifications={})
call(env.merge("PATH_INFO" => uri).merge(env_modifications)).last.join
end
def partial( page, variables={} )
haml page, {layout:false}, variables
end
end
সাহায্যকারী / nicebytes.rb
# encoding: utf-8
module NiceBytes
K = 2.0**10
M = 2.0**20
G = 2.0**30
T = 2.0**40
def nice_bytes( bytes, max_digits=3 )
value, suffix, precision = case bytes
when 0...K
[ bytes, 'B', 0 ]
else
value, suffix = case bytes
when K...M then [ bytes / K, 'kiB' ]
when M...G then [ bytes / M, 'MiB' ]
when G...T then [ bytes / G, 'GiB' ]
else [ bytes / T, 'TiB' ]
end
used_digits = case value
when 0...10 then 1
when 10...100 then 2
when 100...1000 then 3
else 4
end
leftover_digits = max_digits - used_digits
[ value, suffix, leftover_digits > 0 ? leftover_digits : 0 ]
end
"%.#{precision}f#{suffix}" % value
end
module_function :nice_bytes # Allow NiceBytes.nice_bytes outside of Sinatra
end
মডেল / init.rb
# encoding: utf-8
require 'sequel'
DB = Sequel.postgres 'dbname', user:'bduser', password:'dbpass', host:'localhost'
DB << "SET CLIENT_ENCODING TO 'UTF8';"
require_relative 'users'
মডেল / user.rb
# encoding: utf-8
class User < Sequel::Model
# ...
end
যাত্রাপথ / init.rb
# encoding: utf-8
require_relative 'login'
require_relative 'main'
যাত্রাপথ / login.rb
# encoding: utf-8
class MyApp < Sinatra::Application
get "/login" do
@title = "Login"
haml :login
end
post "/login" do
# Define your own check_login
if user = check_login
session[ :user ] = user.pk
redirect '/'
else
redirect '/login'
end
end
get "/logout" do
session[:user] = session[:pass] = nil
redirect '/'
end
end
যাত্রাপথ / main.rb
# encoding: utf-8
class MyApp < Sinatra::Application
get "/" do
@title = "Welcome to MyApp"
haml :main
end
end
মতামত / layout.haml
!!! XML
!!! 1.1
%html(xmlns="http://www.w3.org/1999/xhtml")
%head
%title= @title
%link(rel="icon" type="image/png" href="/favicon.png")
%meta(http-equiv="X-UA-Compatible" content="IE=8")
%meta(http-equiv="Content-Script-Type" content="text/javascript" )
%meta(http-equiv="Content-Style-Type" content="text/css" )
%meta(http-equiv="Content-Type" content="text/html; charset=utf-8" )
%meta(http-equiv="expires" content="0" )
%meta(name="author" content="MeWho")
%body{id:@action}
%h1= @title
#content= yield
require "sequel"
এবংDB
প্রাথমিকভাবে ফাইলগুলির জন্যmodels/init.rb
ব্যবহারrequire_relative
করা - আপনি আপনারmodels
ডিরেক্টরিতে সিডি করতে পারেন , একটি আইআরবি কনসোল খুলতেrequire './init'
পারেন এবং টাইপ করতে পারেন এবং ইন্টারেক্টিভ অনুসন্ধানের জন্য আপনার সম্পূর্ণ ডাটাবেস এবং মডেল সেটআপ লোড করা যেতে পারে ।