Задать вопрос
  • Как прокинуть Callback в Go из под Ruby?

    @sichacvah
    а зачем строки передавать именно таким способом? Есть же стандартный тип :string.
    Я попробовал написать простенький парсер на го и дергать его из руби кода.
    Github
    Как я понял руби FFI передает C строку и её надо конвертировать в го строку

    //export grab
    func grab(seedUrlsC *C.char) string {
    	seedUrlsString := C.GoString(seedUrlsC)
    	seedUrls := strings.Split(seedUrlsString, ",")
    ....


    Руби код:

    require 'ffi'
    require 'json'
    
    module ParserYandex
      extend FFI::Library
      ffi_lib 'lib/parserlib.so'  
               
      attach_function :grab, [:string], :string
    end
    
    def self.getData(urls)
      stringUrls = urls.join ','
      json_data = ParserYandex.grab(stringUrls)
      data = JSON.parse(json_data)
      data.each do |item|
        puts item
      end
    end
    
    urls = ["https://auto.yandex.ru/vaz/granta/7684152/complects"]
    
    self.getData(urls)
    Ответ написан