Rails 3> Отрисовка представлений в задаче rake

Я застрял с задачей rake, которая должна подготовить информационный бюллетень для Mailchimp.

Использование материалов rails 2.x в googled Теперь у меня есть этот код:

desc "Sends newsletter to Mailchimp list"
  task :send_newsletter => :environment do
    begin
      # get render helpers
      av = ActionView::Base.new(Rails::Application::Configuration.new(Rails.root).view_path)
      av.class_eval do
        include ApplicationHelper
      end

      things = Stuff.do.things

      h = Hominid::Base.new({:api_key => "xxx"})
      h.create_campaign(
        {
          :list_id => "xxx",
          :subject => "Hey...",
          :from_email => "xxx",
          :from_name => "xxx",
          :to_email => "",
          :auto_footer => true,
          :generate_text => true
        },
        {
          :html => av.render(:template => "stuff/newsletter", :locals => {:things => things}, :layout => false)
        },
        "regular")
    rescue Exception => e
      STDERR.puts ">>> #{e.to_yaml}"
    end

И я получаю это сообщение об ошибке: "undefined method` virtual_path 'for false: FalseClass "

Моя первая попытка была с render_to_string, но я просто могу' c = c ....

Я уже рассмотрел этот вопрос: SO question и, похоже, реализовал очень похожую технику для замены одного цвета, включая альфа-значения:

c = Image.open(f)
c = c.convert("RGBA")
w, h = c.size
cnt = 0
for px in c.getdata():
    c.putpixel((int(cnt % w), int(cnt / w)), (255, 0, 0, px[3]))
    cnt += 1                                                                                                   

Однако это очень медленно. Я нашел этот рецепт в сети, но пока не добился успеха с его использованием.

Я пытаюсь взять различные изображения PNG, которые состоят из одного цвета, белого. Каждый пиксель на 100% белый с различными значениями альфа, включая альфа = 0. Я хочу просто раскрасить изображение новым заданным цветом, например # ff0000 . Итак, мои начальные и результирующие изображения будут выглядеть так, где левая сторона - мое начальное изображение, а правая - мое конечное изображение (ПРИМЕЧАНИЕ: фон был изменен на светло-серый, чтобы его можно было видеть, поскольку он на самом деле прозрачный, и вы не сможете увидеть точки слева.)

alt text

Есть ли лучший способ сделать это?

19
задан mimarcel 17 March 2019 в 16:04
поделиться