توی این نوشته، قصد و هدف اینه که بیایم و با استفاده از فرمورک Sinatra و دیتابیس غیررابطه ای MongoDB ، یک سیستم مدیریت محتوای کوچیک بنویسیم.
دقت کنید که این CMS صرفا یک کار آموزشی بوده و برای استفاده به عنوان CMS اصلی وبلاگ/وبسایت شما به هیچ وجه مناسب نیست
بسیار خوب، برای این که بدونیم از کجا شروع کنیم، ابتدا بیایم ببینیم که از چه چیزهایی قراره که استفاده بشه :
- فرمورک سیناترا
- ارتباط دهنده شیء – مستند (ODM) برای Mongo (اینجا از Mongoid استفاده میکنیم).
خب، ابتدا بیایم Gemfile رو بنویسیم :
source 'https://rubygems.org'
gem 'sinatra'
gem 'mongoid'
بسته به نیازتون، میتونید جم های دیگری هم بهش اضافه کنید.
حالا، باید به برنامه بفهمونیم که دیتابیس ما چه ویژگی هایی باید داشته باشه، پس یک فایل database.yml ایجاد میکنیم و این ها رودرونش مینویسیم :
development:
clients:
default:
database: myCMS
hosts:
- localhost:27017
production:
clients:
default:
uri: <%= ENV['MONGOHQ<em>URL'] %>
options:
skip_version_check: true
safe: true
حالا دو مرحله اساسی کارمون انجام شده، هم میدونیم که دیتابیس چه ویژگی هایی داره و هم میدونیم که چه چیزهایی برای درست اجرا شدن برناممون نیازه.
حالا، وقتش رسیده که یک برنامه ساده بنویسیم:
require 'sinatra'
require 'mongoid'
configure do
Mongoid.load!("./database.yml")
end
این رو در فایلی به اسم main.rb نوشته و ذخیره میکنیم. حالا میتونیم تستش کنیم!
اما این کد، هنوز هیچ چیز قابل دسترسی ای نداره. توی main.rb یک کلاس به اسم Page به این شکل مینویسیم، که بشه مدل ما :
class Page
include Mongoid::Document
field :title , type: String
field :text , type: String
end
خب، حالا میتونیم برای ساختن صفحاتمون اقدام کنیم. ابتدا از طریق شل اینتراکتیو روبی، یک صفحه نمونه میسازیم :
~:$ irb -r ./main.rb
وقتی که شل اینتراکتیو باز شد، این دستورات رو میتونیم توش تایپ کنیم :
hello = Page.new
hello.title = "Hello, World!"
hello.text = "This is first page on this CMS!"
حالا ما یک صفحه ساختیم. این ساخته شدن میتونه به این شکل هم انجام بشه :
Page.create(title:"My second page", text:"This is second page I added to this CMS!")
بسیار خوب، الان صفحه ها ساخته شده! پس چطوری میتونیم اطلاعاتشون رو نمایش بدیم؟!
برگردیم توی main.rb و این قطعه کد رو اضافه کنیم :
get '/pages' do
@pages = Page.all
@title = "Page List"
erb :index
end
خب، یک پوشه به اسم views باید ایجاد کنیم، یک فایل به اسم index.erb هم درونش قرار میدیم ، و این ها رو در ایندکس مینویسیم :
در این کد، یک قالب بندی کلی داریم، همچنین میگیم که اگر پیجی موجود بود، نشونش بده و اگر نبود، پیامی بده و بگو هنوز پیجی اضافه نشده. حالا باید با اجرای برنامه، بتونیم پیج هایی که از طریق کنسول ساختیم رو مشاهده کنیم.
در این قسمت، کلیت یک سیستم مدیریت محتوا رو یاد گرفتیم. فهمیدیم که چطور میشه مدل یک صفحه رو ساخت و بعدش محتواش رو نشون داد. در قسمت بعدی، لینک کردن به پیج های ایجاد شده و همچنین روش ایجاد یک صفحه جدید از طریق خود برناممون رو یاد خواهیم گرفت