2011-09-03 33 views
9

如何配置一个Rails 3.1的应用程序,如“/ R”的特定目录下运行?如何在子目录中部署的Rails 3.1的应用程序

我试着在config.ru:

map '/r' do 
    run Debtor::Application 
end 

但刚刚返回“未找到:/ R”

为了得到它的工作,我不得不围在范围内的所有路线:

scope '/r' do 
    #routes 
end 

,并添加以下行到CONFIG/applcation.rb

config.assets.prefix = "/r/assets" 

并将我的jquery ui css文件从/ stylesheets移动到/ r/stylesheets。

这似乎太复杂了。有没有更简单的方法?为什么不是我的config.ru设置工作?

我的使用情况是有一个WordPress服务器轨供电AJAX后端。

回答

6

你下乘客运行?

然后RailsBaseURI可能是你想要的东西。

https://www.phusionpassenger.com/library/deploy/apache/deploy/ruby/#deploying-an-app-to-a-sub-uri

如果乘客下不运行,请更新您的问题,以显示你正在部署什么。

+0

谢谢你的回复。是的,我正在使用乘客。我正在寻找一个更简单的解决方案。 – Peder

+0

你的apache配置文件比1行简单吗?我不确定你能比这更简单。对不起,我困惑。 – Doon

+0

我怎样才能做到这一点只有1线配置?在我看来,我需要从文档根目录的子路径创建一个符号链接到rails project public目录。 – Peder

3

下面介绍如何在Rails 3.1的应用程序部署到Apache的一个子目录,更换config.action_controller.relative_url_root不再存在。

config/routes.rb

scope 'my_subdir' do 
    # all resources and routes go here 
end 

在Apache配置文件:

Alias /my_subdir /var/www/my_subdir/public 
<Location /my_subdir> 
    SetEnv RAILS_RELATIVE_URL_ROOT "/my_subdir" 
    PassengerAppRoot /var/www/my_subdir 
</Location> 

,它应该工作,包括所有资产会自动指向/my_subdir

+0

这将真正适用于公共目录中的资产和文件吗? – Peder

+0

当您的资产位于“应用/资产”文件夹中时,它将起作用。但是它也应该适用于公共目录中的资产和文件,因为“Alias”关键字直接将文件夹指向公用文件夹。请让我知道它是否有效。 –

4

对我而言,创建子uri(/ info)到应用程序的'public'文件夹的符号链接(在我的服务器上的其他用户/ home/otheruser/current/public下创建)的符号链接。

ln -s /home/myapp/current/public /home/mysite/public_html/info 

然后我插入的虚拟主机进入该网站的这里面的配置:

Alias /info /home/myapp/current/public 
<Location /info> 
    PassengerAppRoot /home/myapp/current 
    RackEnv production 
    RackBaseURI /info 
</Location> 

没有范围的路线,没有资产前缀配置。

+0

Best answer yet!如果我可以,我会再次回答这个问题:) – Ali

+0

对..这是最干净的解决方案。谢谢 :) – n3rve

相关问题