Слияние Ruby-скриптов - PullRequest
       1

Слияние Ruby-скриптов

1 голос
/ 03 апреля 2012

Я загружаю контент в размещенную CMS.Они предоставляют Ruby Gem, который позволяет мне загружать много контента программно.Я смог загрузить свой контент, отредактировав один из их сценариев, но не могу заставить сценарий включить мой файл в загрузку.Это сценарий, который я успешно использую:

#!/usr/bin/env ruby -rubygems
require File.join(File.dirname(__FILE__), 'authentication')
require "csv" # faster_csv (ruby 1.9)

lines = CSV.read(File.join(File.dirname(__FILE__), 'karaoke.csv')) # Exported an Excel file as CSV
lines.slice!(0) # remove header line
collection = StorageRoom::Collection.find('my collection ID')
Song = collection.entry_class
lines.each do |row|
 karaoke = Song.new(:artist => row[0], :song => row[1], :genre => row[2])
  if karaoke.save
    puts "Misuero Karaoke Latino saved: #{karaoke.artist}, #{karaoke.song}, #{karaoke.genre} "
  else
    puts "Misuero Karaoke Latino could not be saved: #{karaoke.errors.join(', ')}"
  end
end

Это сценарий, согласно их примеру, который будет загружать файл:

#!/usr/bin/env ruby -rubygems
require File.join(File.dirname(__FILE__), 'authentication')

path = ::File.expand_path(File.join(File.dirname(__FILE__) + '..', 'spec', 'fixtures', 'image.png'))
collection = StorageRoom::Collection.find('my collection ID')

# Upload File
entry = collection.entry_class.new(:name => "StorageRoom Logo", :file => StorageRoom::File.new_with_filename(path))

if entry.save 
  puts "Entry saved (#{entry[:@url]})"
  puts "URL of the uploaded file is #{entry.image.url}"
  puts "URL of the automatically generated thumbnail is #{entry.image.url(:thumbnail)}" # Multiple Image Versions can be specified in the interface
else
  puts "Entry could not be saved: #{entry.errors.join(', ')}"
end

Я хочу смешать оба сценарияпоэтому я запускаю только один, но я не могу заставить часть загрузки файла работать вообще.Я пытаюсь загрузить .mov.Где должны быть файлы по отношению к сценарию?Как я могу сделать так, чтобы они были названы правильно?Как бы я отредактировал скрипт так, чтобы он делал несколько файлов?А как мне объединить скрипты?

1 Ответ

3 голосов
/ 03 апреля 2012

Где должны быть файлы по отношению к сценарию?

File.dirname(__FILE__) возвращает каталог текущего файла, а File.join позволяет добавлять другие каталоги к пути ('..', конечно, означает родительский каталог), а File.expand_path гарантирует, что это абсолютный, а не относительный путь. .

Как я могу сделать так, чтобы они были названы правильно?

В принципе невозможно ответить на этот вопрос, не зная структуры вашего каталога. Чтобы понять это, попробуйте использовать консоль ruby ​​и поэкспериментируйте с методами файла ядра .

Как мне отредактировать скрипт, чтобы он делал несколько файлов?

Возможно, вы захотите зациклить раздел под # Upload File над массивом имен файлов. Для создания этого массива может оказаться полезным Dir.entries / Dir.glob: Dir api docs .

А как мне объединить сценарии?

Вообще говоря: объедините файлы, затем удалите дубликаты (например, аутентификация, назначение коллекции var). Ваша конкретная реализация будет зависеть от структуры класса Song (например, если это объект, к которому вы прикрепляете файлы, вы, вероятно, можете просто добавить :file => StorageRoom::File.new_with_filename(path) к выражению new в вашем первом скрипте) и / или CSV (например, если это с включенным путем к файлу, вы можете просто передать его, не нажимая Dir.glob и т. д.

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