1

我试图弄清楚如何正确设置机架重写并且遇到了一些麻烦。我有点菜鸟,网站的设置不是很清楚。如果有人对此了解更多,我有几个问题。

1)我需要把 gem 放在我gemfile的文件和config.ru文件中吗?(根据 README 部分中的“Sample rackup 文件”)

2) 我需要在我的config.ru文件和我的config/application.rb文件中设置 rack-rewrite 吗?(根据 README 的“Sample rackup file”和“Sample usage in a rails app”部分)

3)在我的application.rb文件中我应该把配置放在哪里?在class Application < Rails::Application街区?

4)我已经尝试了以上两种方法,但是,当我unicorn在本地启动时,我收到以下错误

    $ unicorn
I, [2014-05-13T16:57:00.926144 #17432]  INFO -- : Refreshing Gem list
/config/environment.rb:2:in `require': /config/application.rb:98: syntax error, unexpected end-of-input, expecting keyword_end (SyntaxError)
  from /config/environment.rb:2:in `<top (required)>'
  from config.ru:4:in `require'
  from config.ru:4:in `block in <main>'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rack-1.4.5/lib/rack/builder.rb:51:in `instance_eval'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rack-1.4.5/lib/rack/builder.rb:51:in `initialize'
  from config.ru:1:in `new'
  from config.ru:1:in `<main>'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/gems/unicorn-4.8.2/lib/unicorn.rb:48:in `eval'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/gems/unicorn-4.8.2/lib/unicorn.rb:48:in `block in builder'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/gems/unicorn-4.8.2/lib/unicorn/http_server.rb:760:in `call'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/gems/unicorn-4.8.2/lib/unicorn/http_server.rb:760:in `build_app!'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/gems/unicorn-4.8.2/lib/unicorn/http_server.rb:137:in `start'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/gems/unicorn-4.8.2/bin/unicorn:126:in `<top (required)>'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/bin/unicorn:23:in `load'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/bin/unicorn:23:in `<main>'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/bin/ruby_noexec_wrapper:14:in `eval'
  from /Users/me/.rvm/gems/ruby-2.0.0-p0@mysite/bin/ruby_noexec_wrapper:14:in `<main>'>'

- - - - - - - - - - 更新 - - - - - - - - - -

我已经解决了上面的问题。看起来 gem 非常通用,您可以在 , 中设置它application.rbconfig.ru或者在初始化程序目录中创建一个rack_rewrite.rb文件。

有没有人对放置代码的最佳位置有任何意见?

另外,有没有办法解释/重定向的尾随?例如,有没有办法将它压缩成一行?

r301 '/for-gyms-and-rec-centers', '/venues/3'
r301 '/for-gyms-and-rec-centers/', '/venues/3/
4

1 回答 1

0

如果您使用的是 rails 应用程序,那么您可能应该保持它干净,并且只将 rack rewrite gem 声明放在您的 gemfile 中,而您不需要在 config.ru 文件中使用它。最重要的是,您只需要 application.rb 文件中的配置代码。

您可以安全地将块放在班级块的末尾附近,就在您班级的最后一个之前end(恰好在模块的最后一个结尾之前)。请记住,对于独角兽,在堆栈中插入机架中间件的位置时要小心 - 我相信您会想要在之前定位它Rack::Runtime而不是Rack::Lock

至于斜杠问题,我相信你可以拥有'/for-gyms-and-rec-centers(.*)'并且应该抓住它。

于 2014-06-06T21:59:00.767 回答