#ruby-on-rails #static #dns #public
#ruby-on-rails #статический #dns #общедоступный
Вопрос:
У меня следующая структура папок:
/rails
/public
/images
И у меня есть 2 домена:
long_domain.com
short.one
Я хочу, чтобы, когда long_domain.com при загрузке он использует папку /public в качестве общедоступной, а при загрузке short.one он использует /public/images
Проблема в том, что я не хочу, чтобы он загружал маршруты, он должен действовать как исходная общедоступная папка.
Можно ли это сделать с помощью Rails? Было бы лучше использовать другой «статический» и легкий сервер?
Ответ №1:
Есть несколько способов, которыми вы могли бы это сделать.
Если ваши изображения размещены за пределами сайта, вам придется использовать полные URL-адреса в тегах изображений. Относительные ссылки будут вести на ваш CDN или сайт, на котором находятся ваши изображения. Преимущество здесь в том, что у вас есть явный контроль над вашим приложением, и оно, вероятно, будет работать. Я бы определил некоторую константу в своей конфигурации для местоположения размещения изображений, чтобы я мог легко изменить ее позже.
Помимо этого, вы можете использовать mod_passenger для прокси-сервера обратно в Rails и использовать правило mod_rewrite для перезаписи ваших тегов изображений на лету. Преимущество здесь в том, что вам не придется менять свое приложение (хотя изменения, вероятно, не так уж плохи). Проблема в том, что mod_rewrite — это регулярное выражение, поэтому может потребоваться некоторое время, чтобы определить правильное правило (и протестировать все странные случаи).
Третий вариант — использовать драгоценный камень. Если вы действительно пытаетесь масштабировать обработку изображений, вам следует просто переключиться на Dragonfly, которая может хранить вторичную копию изображения в любом месте, где вы хотите. У него много опций и функций. Похоже, вас заинтересует этот аспект: http://markevans.github.com/dragonfly/file .DataStorage.html
Надеюсь, это даст вам несколько идей.
Комментарии:
1. Я думаю, что я собираюсь использовать RewriteRule в Apache / Passenger, я этого не хотел, потому что на моем компьютере для разработки я просто запускаю Rails в одиночку: P. Но мне придется использовать Passenger в производстве, так что лучше привыкнуть к этому ^^