Sinatra Geltungsbereich Von Variablen
Nehmen Sie den folgenden code:
### 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
Möchte ich name
, und alle diese Variablen zur Verfügung, um das gesamte Skript, sowie die Aussicht. Ich habe versucht, Ihnen Globale Variablen, aber keine Würfel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht nicht die "sauberste" Weg, es zu tun, aber die Einstellung, Sie als Optionen funktionieren sollte:
--> http://www.sinatrarb.com/configuration.html 🙂
Einstellung:
immer:
options
wird nicht werfen eine Warnung:Sinatra::Base#options is deprecated and will be removed, use #settings instead.
Verwendensettings
statt.Machen Sie Konstanten. Sie sollten auf jeden Fall sollten Sie nicht? Sie gehen nicht zu ändern.
Konstant, es zu schreiben in allen Kappen.
Lesen Sie in diesem Artikel auf Ruby-Variable Scopes", wenn Sie weitere Fragen habe.
http://www.techotopia.com/index.php/Ruby_Variable_Scope
Einem anderen, sauberen option kann eine config-Klasse, wo die init-Methode lädt die YAML und legt dann die Variablen.
Spaß haben. @Antworten Sie mir wenn du fertig bist mit deinem neuen blog (ich vermute, dies ist, was dieses ist).
Aus der Sinatra README:
Den Zugriff auf Variablen in Vorlagen
Vorlagen sind bewertet in demselben Kontext wie route-Handler. Instanz-Variablen, die im route-Handler sind direkt zugänglich von Vorlagen:
Oder geben Sie ein explizites Hash von lokalen Variablen:
Dies ist in der Regel verwendet, wenn das Rendern von templates als Teiltöne innerhalb anderer Vorlagen.
Eine Dritte option wäre die Errichtung Zugriffsmethoden für Sie als Hilfsmethoden. (Die auch verfügbar in der gesamten Anwendung und Ansichten.)
was auch funktioniert:
Aber vergessen Sie nicht, den server neu starten, nachdem Sie diese änderung