Выполнить рубиновый код из тега уценки

Меня просят протестировать примеры, которые я привожу в документации по уценке (веб-сайт, созданный с помощью Middleman).

Мне нужно проверить, верны ли примеры запроса API, который я предлагаю.

Итак, в моем примере у меня есть:

_example.md

```ruby
uri = URI.parse("http://localhost:3000/oauth/token")
request = Net::HTTP::Post.new(uri)
request.content_type = "application/x-www-form-urlencoded; charset=utf-8"
request.set_form_data(
  "client_id" => "id",
  "client_secret" => "secret",
  "grant_type" => "password",
  "password" => "password",
  "username" => "[email protected]"
)

req_options = {
  use_ssl: uri.scheme == "https"
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end
response.code
```

Идея состоит в том, чтобы войти в файл mardown и читать между тегами ```ruby ``` в моем тестовом файле test.rb

def run_http_request

  File.open('../_example.md').each_line do |line|
    next if line.start_with? '```'
    line
  end

end

Я бы хотел, чтобы этот метод выполнял HTTP-запрос ...

🤔 А знаете ли вы, что...
Ruby позволяет использовать блоки кода для работы с итерациями и коллекциями.


121
1

Ответ:

Решено

Попробуйте сделать следующее:

content = File.read('../_example.md')
matches = content.match(/```ruby(.+)```/m)

code = matches[1] # matches[0] contains the code and the ```ruby``` part
eval(code)

Надеюсь, поможет!