Показ дописів із міткою rubinius. Показати всі дописи
Показ дописів із міткою rubinius. Показати всі дописи

вівторок, 29 жовтня 2013 р.

Magento XML-RPC API і Ruby

Після написання першої статті Magento REST API і OAuth в Ruby, захотілося продовжити вивчення можливостей Magento API.
Весь сир-бор через те, що можливості REST в Magento просто жалюгідні.
На сьогодні Magento підтримує всі найбільш поширені способи доступу до API сайтів: REST, XML-RPC, SOAP.

Magento SOAP/XML-RPC API дає вам можливість керувати своїми магазинами електронної комерції, забезпечуючи методи для роботи з ресурсами, такими як клієнти, категорій, продукти і замовлення.

Про SOAP можна говорити багато і довго.
Для мене основними мінусами стали складність протоколу і відсутність вбудованої підтримки в Ruby.
Натомість стандарт XML-RPC зачарував мене своєю надзвичайною простотою.
В базову поставку Ruby вже входить бібліотека для роботи з XML-RPC, відповідно вам не доведеться замислюватися про структуру запитів і обробку відповідей в XML.

Тому саме XML-RPC в основному і буде присвячена ця стаття.
Не буду зупинятися на питанні, що таке XML-RPC і навіщо він потрібен. У мережі багато статей на цю тему.

Просто постараюся коротко показати, яким простим способом можливе створення клієнта до XML-RPC веб-сервісу на Ruby.
require 'xmlrpc/client'

config = {
  api_user: 'user',
  api_key:  'secret',
  host:     'example.com',
  path:     '/api/xmlrpc',
  port:     80,
}
client = XMLRPC::Client.new(config[:host], config[:path], config[:port])

# If somestuff requires api authentification,
# we should get session token
session = client.call('login', config[:api_user], config[:api_key])

parent_id = 1
store_view = 1
client.call('call', session, 'catalog_category.tree', [parent_id , store_view])

# If you don't need the session anymore
client.call('endSession', session)

Все просто: ми підключаємося до сервера, отримуємо ключ сесії і виконуємо запити.

Документацію по всіх запитах Magento API можна знайти на офіційному сайті.
XML-RPC підтримується тільки першою версією Magento API.

пʼятниця, 7 жовтня 2011 р.

Тестування швидкодії Time і Date в різних версіях Ruby

Вчора задався питанням швидкодії бібліотек для роботи з датою і часом, які входять до складу Ruby - Time і Date.

Для для тестування був написаний простий скрипт з використанням модуля Benchmark, який надає методи для вимірювання та звітності часу, що був затрачений на виконання коду Ruby:
require 'benchmark'
require 'date'

puts RUBY_DESCRIPTION
n = 10_000

puts
Benchmark.bm(10) do |x|
  x.report("Time:")     { n.times{Time.now} }
  x.report("DateTime:") { n.times{DateTime.now} }
end

puts
Benchmark.bm(10) do |x|
  x.report("Time:")     { n.times{Time.mktime(2012, 12, 23)} }
  x.report("DateTime:") { n.times{DateTime.new(2012, 12, 23)} }
end

У тестуванні будуть брати участь наступні версії Ruby: 1.8.7, 1.9.2 та 1.9.3-rc1, а також альтернативні реалізації інтерпретатора: Rubinius написаного на мові C++ та JRuby - на Java.

Тепер подивимося на результат виконання цього скрипта:

пʼятниця, 5 серпня 2011 р.

#rbxday

5 серпня 2011 команда Rubinius проводить масштабне тестування своєї альтернативної реалізація мови програмування Ruby.
Ну ось, ще один привід спробувати в дії Rubinius.

Подробиці тут: http://rbxday.rubini.us

Для тестування досить встановити Rubinius з допомогою RVM і спробувати запустити ваш код.
$ sudo rvm get head
$ sudo rvm reload
$ sudo rvm install rbx
$ rbx-master --version
rubinius 1.2.5dev (1.8.7 560efecd yyyy-mm-dd JI) [i686-pc-linux-gnu]