أين أضع التعليمات البرمجية في سيناترا (روبي إطار الشبكة) التي أريد فقط أن تنفيذ مرة واحدة؟

StackOverflow https://stackoverflow.com/questions/1812645

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا لا أعرف إذا كان هذا هو السؤال روبي أو سؤال سيناترا، لأنني جديدة على حد سواء. لا يعمل التعليمات البرمجية التالية، وأنا أفهم لماذا، لأن my_variable الأول هو المحلي إلى كتلة لها. أنا فقط لا أعرف بناء الجملة من أجل الحصول على ذلك الحق.

require 'rubygems'
require 'sinatra'

configure do
    my_variable = "world"
end

get '/' do
    "Hello " + my_variable
end

وEDIT1 - الأعمال التالية، ولكن بعد ذلك أعتقد أنا في حيرة من أمري الغرض السليم للكتلة تكوين

.
require 'rubygems'
require 'sinatra'

my_variable = "world"

get '/' do
    "Hello " + my_variable
end
هل كانت مفيدة؟

المحلول

require 'rubygems'
require 'sinatra'

set :my_variable, "world"

get '/' do
  "Hello " + settings.my_variable
end

نصائح أخرى

وكتلة تكوين هو فقط لتهيئة التطبيق ذات الصلة. اذا كان هذا ما هو عليه، يجب أن تغلف ذلك مناسبا:

require 'sinatra'

configure do
  set :my_option, "world"
end

get '/' do
  "Hello #{options.my_option}"
end

وثمة طريقة أخرى هي:

require 'rubygems'
require 'sinatra'

@my_variable="world"

get '/' do
  "Hello " + @my_variable
end

وأود أن تعيين متغير الدرجة - على سبيل المثال. @@my_variable - داخل كتلة تكوين. وجود كتلة تكوين لرمز الذي تريد تشغيله عند بدء التشغيل، لذلك وضع الخاص بك متغير يجعل لها معنى. تطبيق سيناترا الخاص بك هو فئة فرعية من Sinatra::Base، وذلك باستخدام متغير فئة في هذا الوضع يبدو مناسبا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top