ruby / sinatra: будет ли код за пределами маршрутов выполняться только один раз или при каждом пинге сайта? - PullRequest
1 голос
/ 04 мая 2019

У меня тонкий сайт Синатры.

Если я включу код вне маршрутов получения, будет ли он выполняться в фоновом режиме только один раз или будет запускаться каждый раз при проверке IP-адреса.

Например, функция 'start' будет запускаться только один раз при создании сервера / gitpush или будет запускаться заново при каждом посещении сайта.

-

other-code.rb

$variable
$count = 0
def start
  $variable = "hello world + #{$count}"
  $count += 1
end

start

-

index.rb

require 'sinatra'
require 'json'
require 'other-code'

get '/' do

content_type :json
    puts $variable

end

1 Ответ

2 голосов
/ 04 мая 2019

Require загружает код ruby ​​из необходимого файла только один раз. Вот как вы можете сказать:

#index.rb

require 'sinatra'
require 'json'
require_relative 'other_code'

get '/' do
  content_type :json
  puts $variable
end


# other_code.rb

$variable

def start
  $variable = 'hello world'
end
puts 'other code called'
start

Теперь запустите ваш сервер sinatra

ruby index.rb

Вы увидите это в консоли:

other code called
== Sinatra (v2.0.5) has taken the stage on 4567 for development with backup from Puma
Puma starting in single mode...

Затем нажмите браузер несколько раз и посмотрите на консоль, вы увидите other code called вывод только 1 раз. Однако каждый раз, когда вы нажимаете на свой маршрут получения, вы должны видеть вывод hello world!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...