2014-01-19 2 views
2

У меня есть маршрут i.e. mysite.com:3000/new_route, который я бы хотел проигнорировать, возможно ли это сделать через рельсы, а не на стороне сервера?Как игнорировать маршрут в рельсах?

Я читал, что это можно сделать через apache, однако мое приложение работает на Heroku, и этот тип контроля недоступен для меня. Поэтому я ищу другой способ сделать это через Rails.

Благодаря

обновление

Я использую Фея, чтобы иметь живые уведомления в моем приложении, на localhostfaye работают на port 9292 - localhost:9292/faye, все хорошо в режиме разработки, но и в производстве она должна указывать на mydomain.com/faye, в производственной среде нет номеров портов, а загрузка faye.js возвращается error not found

+0

Что вы подразумеваете под _ignore_? Вы хотите, чтобы это было направлено куда-то еще? Должен ли он вернуть 404? Какие? –

+0

@MichaelBerkowski, когда я обращаюсь к mydomain.com/blog, он не должен обрабатываться блочным контроллером или любым другим ресурсом в моем приложении,/blog - это ссылка на внешнее приложение. – user2821877

+0

Лучше скажите, что я использую faye для получения живых уведомлений в своем приложении, ни один localhost faye не работает на порту 9292 - 'localhost: 9292/faye', все хорошо в режиме разработки, но в процессе производства следует указывать на' mydomain.com/ faye', в производственной среде нет номеров портов, а загрузка faye.js возвращает ошибку 'not found', – user2821877

ответ

0

Вы можете определить маршрут на вверху вашего файла routes.rb, который будет перенаправлен на другую страницу.

get '/new_route', redirect: '/' 
+1

это НЕ хороший вариант, он не может исправить проблему и вносит в бесконечный цикл. – LPing

2

Если вы говорите о маршруте ресурсов вы не хотите быть создано:

resources :something, except: :new 

Однако, я не совсем уверен, если это то, что вы имели в виду игнорировать.

0

К тому времени, когда вы попросите Rails обработать маршрут, уже слишком поздно. Если вы попросите рельсы обработать маршрут, он либо вернет ошибку 404 из 500, либо страницу.

Если вы хотите, чтобы маршрут обрабатывался другим приложением, его необходимо будет перехватить вашим веб-сервером (nginx или apache, или в зависимости от того, который вы используете). В своей конфигурации вы просто перенаправляете этот маршрут на другое приложение и каждый другой маршрут в приложение Rails.

EDIT

Другой вариант у вас есть, чтобы направить ваши запросы на другой сервер.

Вы добавить маршрут как

get 'faye/*query' => 'faye#get' 
post 'faye/*params' => 'faye#post' 

, а затем контроллер

require 'faraday' 

class FayeController < ApplicationController 

    APP = 'http://mydomain.com:9292' 

    def get 
    request_page :get 
    end 

    def post 
    request_page :post 
    end 

    private 

    def request_page(method) 
    conn = Faraday.new(:url => APP) 
    query = params.delete(:query) 
    response = conn.send method, query, params 
    render text: response.body.gsub(APP, 'mydomain.com/faye') 
    end 
end 

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

+0

спасибо, любая идея о том, как настроить это на героку? – user2821877

+0

Я добавил еще один вариант, более подходящий для Heroku –

Смежные вопросы