Обход ошибки версии стойки с помощью направляющих 2.3.5

С чем Вы надеетесь закончить в конце? Тело, предмет, отправитель, вложение? Вы должны провести некоторое время с RFC2822 для понимания формата почты, но здесь являетесь самыми простыми правилами для хорошо сформированной электронной почты:

HEADERS\n
\n
BODY

таким образом, первая пустая строка (двойная новая строка) является разделителем между ЗАГОЛОВКАМИ и ТЕЛОМ. ЗАГОЛОВОК Похож на это:

HSTRING:HTEXT

HSTRING всегда запускается в начале строки и не содержит пробела или двоеточий. HTEXT может содержать большое разнообразие текста, включая новые строки, пока символ новой строки сопровождается пробелом.

"ТЕЛО" является действительно просто любыми данными, которые следуют за первой двойной новой строкой. (Существуют различные правила, если Вы передаете почту через SMTP, но обрабатываете его по каналу, Вы не должны волноваться об этом).

Так, в действительно простом, приблизительно условия 1982 RFC822 , электронное письмо похоже на это:

HEADER: HEADER TEXT
HEADER: MORE HEADER TEXT
  INCLUDING A LINE CONTINUATION
HEADER: LAST HEADER

THIS IS ANY
ARBITRARY DATA
(FOR THE MOST PART)

самая современная электронная почта более сложна, чем это все же. Заголовки могут быть закодированы для наборов символов или слова пантомимы RFC2047 или тонна другого материала, о котором я не думаю прямо сейчас. Тела действительно тверды к коду самокрутки в течение этих дней к тому, если Вы хотите, чтобы они были значимы. Почти вся электронная почта, это сгенерировано MUA, будет закодированный MIME. Это могло бы быть кодируемым программой uuencode текстом, это мог бы быть HTML, это могла бы быть кодируемая программой uuencode электронная таблица Excel.

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

8
задан Matthew 29 November 2009 в 06:49
поделиться

8 ответов

You will almost always want to unpack the gems that your application depends on into the vendor folder. You can do that with this rake command:

rake gems:unpack:dependencies

This will create a folder vendor/gems under your application's root folder and unpack all of the gems that you declared with the config.gem command into it.

This will not only solve your problem with mismatching rack versions, but also make sure that you are using the exact same versions of gems in production as you are using in development, which can prevent many potential headaches in the future.

0
ответ дан 5 December 2019 в 12:59
поделиться

Я столкнулся с той же проблемой при обновлении до 2.3.5.

Интересно, на каком сервере вы все еще используете Rails 2.2.2? Я думал, что Dreamhost уже переместил всех на 2.3.4. Я пожаловался им 3 месяца назад, и на следующий день они обновили Passenger на моем сервере, чтобы я мог установить текущую версию Rails. Поэтому я бы рекомендовал вам подать заявку в службу поддержки, если Rails 2.3.5 жизненно важен для вашего приложения. Но между 2.3.4 и 2.3.5 было не так много изменений, поэтому, скорее всего, ваше приложение будет работать так же хорошо на 2.3.4. Вы пробовали запустить его на установленной производителем версии 2.3.4?

Речь идет не об отсутствующем драгоценном камне, а о гем, который требуется дважды с несовпадающими версиями. rake gems: unpack: dependencies этого не исправляет (я пробовал).

Я подозреваю, что это снова проблема с версией Dreamhost Passenger. На моем сервере (buenosaires) установлен Passenger 2.2.5. Последняя пассажирская версия - 2.2.7.

1
ответ дан 5 December 2019 в 12:59
поделиться

FWIW, я могу подтвердить, что замораживание драгоценного камня не решает проблему; Фактически, там, где до моего развертывания происходил взрыв (используя DH's Rack 0.3.0, каким-то образом!), теперь мой раскрутка взрывается с той же ошибкой, что и выше. Возможно, наконец, пришло время переместить мою игрушку / доказательство концепции на «настоящий» хостинг, если я хочу выполнить какую-либо работу.

ОБНОВЛЕНИЕ: 24 декабря 2009 года мой сервер был обновлен до Rack 1.0.1, что помогло мне решить эту проблему. Если вы все еще испытываете проблемы с учетной записью, я бы порекомендовал поддержку обмена сообщениями; в моем случае они были довольно отзывчивыми (с электронными письмами, а не с действиями, но за такую ​​цену вы действительно не можете получить все это).

0
ответ дан 5 December 2019 в 12:59
поделиться

rake gems: unpack: dependencies не позволяет вам распаковывать rake в папку vendor / gems.

Что касается проблемы Dreamhost, вы должны сделать то, что сказал Мэтт. Заморозить рельсы до 2.3.4.

rake rails:freeze:gems VERSION=2.3.4

Dreamhost использует старую версию Passenger, которая предварительно загружает стойку 1.0.0. Вы не можете загрузить стойку 1.0.1 после предварительной загрузки стойки 1.0.0. Таким образом, последняя возможная версия rails для DH - это Rails 2.3.4 и Rack 1.0.0.

4
ответ дан 5 December 2019 в 12:59
поделиться

Dreamhost обновляет Rack and Rails: http://www.dreamhoststatus.com/2009 / 12/21 / ruby-gem-updates /

Думаю, это решает эту проблему.

0
ответ дан 5 December 2019 в 12:59
поделиться

Я думаю, что на данный момент лучше всего было бы разморозить все и использовать то, что находится на "фантоме". В настоящее время у них есть рельсы 2.3.4 и если вы можете подождать день или два - dreamhost обновляет рельсы gems до 2.3.5 (они должны были быть обновлены уже вчера 21 декабря - но по каким-то причинам они не объяснили, что они все еще на 2.3.4).

.
0
ответ дан 5 December 2019 в 12:59
поделиться

Dreamhost исправил эту проблему на своей вики-странице поддержки.

http://wiki.dreamhost.com/Ruby_on_Rails#Rails_2.3.5_-_Rack_1.0_already_activated_.28fix.29

С этой страницы:

При использовании Rails 2.3.5 вы получите проблему от Passenger говоря, что Rack 1.0.1 не может быть загружен, потому что Rack 1.0 уже активирован.

Один из способов решить эту проблему - заморозить Rails и распаковать гем Rack в vendor / gems / rack-1.0.1

Как только Rails и Rack окажутся в vendor / rails и vendor / gems / rack-1.0.1 вы должны изменить action_controller в файле: vendor / rails / actionpack / lib / action_controller.rb

В строках номера 34 и 35 необходимо закомментировать и добавить следующее для загрузки стойки из vendor / gems

  load "# {RAILS_ROOT } /vendor/gems/rack-1.0.1/lib/rack.rb "
 

Конечный результат должен выглядеть примерно так:

  #gem 'rack', '~> 1.0.1 '
 #require' rack '
load "# {RAILS_ROOT} /vendor/gems/rack-1.0.1/lib/rack.rb" 
 

Настоящая проблема заключается в том, что Passenger уже загружает Rack 1.0, и я считаю, что Passenger должен загрузить 1.0.1, чтобы этот взлом исчез.

6
ответ дан 5 December 2019 в 12:59
поделиться

Простое обновление с гемом для стойки не сработало для меня, потому что кажется, что Rails 2.3.5 требует Rack 1.0.1 специально. Итак, когда я сделал стойку обновления гемов -v = 1.0.1, Rails 2.3.5 запустился сразу.

1
ответ дан 5 December 2019 в 12:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: