Nehmen Sie den folgenden Code ein:Sinatra Variable Scope
### Dependencies
require 'rubygems'
require 'sinatra'
require 'datamapper'
### Configuration
config = YAML::load(File.read('config.yml'))
name = config['config']['name']
description = config['config']['description']
username = config['config']['username']
password = config['config']['password']
theme = config['config']['theme']
set :public, 'views/themes/#{theme}/static'
### Models
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/marvin.db")
class Post
include DataMapper::Resource
property :id, Serial
property :name, String
property :body, Text
property :created_at, DateTime
property :slug, String
end
class Page
include DataMapper::Resource
property :id, Serial
property :name, String
property :body, Text
property :slug, String
end
DataMapper.auto_migrate!
### Controllers
get '/' do
@posts = Post.get(:order => [ :id_desc ])
haml :"themes/#{theme}/index"
end
get '/:year/:month/:day/:slug' do
year = params[:year]
month = params[:month]
day = params[:day]
slug = params[:slug]
haml :"themes/#{theme}/post.haml"
end
get '/:slug' do
haml :"themes/#{theme}/page.haml"
end
get '/admin' do
haml :"admin/index.haml"
end
Ich möchte name
machen, und all diese Variablen zur Verfügung, die gesamte Skript sowie die Aussicht. Ich habe versucht, sie zu globalen Variablen zu machen, aber keine Würfel.
Mit 'options' neu zu starten, wird keine Eine Warnung ausgeben: 'Sinatra :: Base # -Optionen sind veraltet und werden entfernt, verwenden Sie stattdessen # settings. Verwenden Sie stattdessen' settings'. – briangonzalez