Управляйте своими данными в онлайн-таблице, загружайте ее в свою БД с помощью однострочного кода на Ruby.

Во многих случаях использование онлайн-таблицы в качестве «источника правды» может дать вам немедленный (сверхнадежный) интерфейс администратора для ваших данных, а однострочный интерфейс Ruby может импортировать данные в ваше приложение в любом формате БД. приложение использует. Это огромный прирост производительности. Давайте просто покажем вам, как это может работать.

  1. Опубликуйте свои данные в Google Doc. (например, список пользователей.)
  2. Возьмите его ссылку JSON (например, этот)
  3. Запустите следующий код Ruby.
> require 'json'
> require 'open-uri'
> uri = #YOUR JSON URI (or practice with mine, above)
> rows = JSON.parse(open(uri).read)['feed']['entry'].map {|row| kvs = row.select {|k,v| k.start_with?('gsx$') } }.map {|row| row = row.map {|k,v| [k.sub('gsx$',''),v['$t'] ]; }.to_h }

(По-видимому, запутанная однострочная строка, выполняющая настоящую черновую работу, — это просто стандартная функциональная обработка уродливого формата JSON, который Google Spreadsheets возвращает в более чистое представление фактических данных. TBH, возможно, для этого есть более чистое, но однострочное достаточно легко. Кроме того, Ruby-ness делает меня счастливым.)

4. rows теперь представляет собой массив хэшей, каждый из которых представляет строку (в нашем случае — пользователя).

> rows[0] 
=> {“id”=>”1", “name”=>”Alice”, “age”=>”30", “sex”=>”F”}

Мы можем перебирать строки и вставлять каждый документ по его идентификатору в нашу БД. При желании мы можем предшествовать этому, удалив таблицу; это приведет к тому, что таблица/коллекция БД будет точно отражать электронную таблицу. Обратите внимание, что это может быть легко сопоставлено с базой данных SQL, документ-ориентированной или ключевой базой данных. Например:

# mongo pseudo-code
> rows.each {|user| MONGO_USERS.insert(user) }
# redis pseudo-code
> rows.each {|user| REDIS.set("users_"+user['_id'], user) }

Вы поняли идею. Теперь мы управляем нашими пользователями через электронную таблицу, но можем запрашивать их из приложения.

Это дает нам непосредственный интерфейс администратора для наших данных, которые редактируются и просматриваются в мощных электронных таблицах Google, что дает вам возможности администратора запрашивать, фильтровать, сортировать и т. д. ваши данные, историю каждой версии данных). Вызвав приведенный выше однострочный код, вы можете вывести его на свой фактический слой сохранения, чтобы ваше приложение запрашивало его.

Если ваши данные администрируются администратором и доступны только для чтения (такие случаи могут варьироваться от текстовой копии пользовательского интерфейса до «рекомендуемых статей на этой неделе»), это может быть ваш интерфейс администратора + БД. В случаях, когда данные могут быть изменены приложением, вы можете использовать описанное выше в режиме upsert, чтобы просто изменить выбранные элементы.

Напомним, чтобы использовать Google Spreadsheet в качестве административного интерфейса:

  1. Поместите свои данные в таблицу Google.
  2. Чтобы добавить его в свое приложение, вызовите следующее:
def google_doc_to_array_of_rows(uri)
    JSON.parse(open(uri).read)['feed']['entry'].map { |row| kvs = row.select {|k,v| k.start_with?("gsx$") } }.map {|row| row = row.map {|k,v| [k.sub("gsx$",""),v["$t"] ]; }.to_h }
end

3. Поздравьте себя — разве это не лучший интерфейс администратора, который вы когда-либо создавали?