ruby-on-rails – Spree作为可安装的引擎
因此,我们希望将我们网站的一部分重新架构为Rails应用程序.最初的计划是拥有一个主要的“站点”应用程序,其中包含许多具有分隔功能的插件应用程序(Rails 3.1引擎) – 商店组件,社交/论坛/聊天组件等.另外,我们想要放置主题/在宝石中设计风格,以便我们的网页设计师可以修改网站外观和一些小的布局调整,而无需“知道Rails”.最初,这进展顺利;我们创建了主要的架构和插件以及主题gem,它们一起玩得很好;像auth这样的横切功能被置于主“站点”应用程序中,并且可以被插件应用程序使用,为我们提供了一个站点的单点登录(设计要求).
我们对商店组件的初步计划是使用Spree(http://spreecommerce.com/),因为它具有开箱即用的95%以上的功能.然而,有一个问题 – Spree作为可安装的引擎发布,但它也是一个应用程序.这意味着不仅Spree在应用程序内部安装(这不是问题,实际上它是我们依赖的行为),但它取决于对主应用程序的控制.研究这种行为的“原因”,似乎取决于两个核心功能.第一块功能是一些SEO永久链接重写功能,必须进入中间件;我们可以破解东西,以便我们的主要应用程序包含这一大块代码(尽管这将开始纠缠整个网站的商店功能,将“Spree作为可安装引擎”的故事混淆……稍后详细介绍). 更复杂的是Spree使用Deface进行主题和定制.虽然这是“聪明”(注意引用),但它确实使Spree整合成了一场噩梦;要么你遵循阻力最小的路径,要让Spree成为一个完整的商店(这完全打破了我们的故事“商店只是我们网站的一部分,并与网站的其他部分,包括auth,主题等等相得益彰.),或者你必须破解Spree的地狱. 不仅如此,Spree还没有遵循标准的Rails引擎路由范例,其中路由被隔离在引擎根目录下(如果你查看lib的routes.rb文件,你可以看到它使用Rails.Application的路由,而不是引擎的路线).这意味着我们无法拥有www.oursite.com/store/…all_the_spree_goodness,我们必须拥有www.oursite.com/spree_owns_the_sites_routes … 那么,还有其他人试过吗?我们喜欢Spree并希望将它用作我们的商店.但它开始看起来没有真正的方法将它与我们网站的其他部分“整合”,除了可能有一些代理魔法与nginx或类似的东西(这是一个单独的噩梦,因为我们希望在Heroku上托管,然后我们必须弄清楚如何将多个不同的应用程序集成到一个数据库中 – 用于单点登录身份验证 – 以及HTTP前端路由器). Spree devs,我们喜欢你的代码,但有没有做任何工作使它成为一个真正的,真正的Rails引擎,而不是一个独立的应用程序恰好将其所有功能打包到引擎?如果没有将它集成到现有网站的能力(包括不“拥有”应用程序,能够将所有路由分开,等等),我们就无法使用它:( TIA. 解决方法
我是Spree的社区经理,所以我想我可以回答你的问题.
是的,正在进行的工作将使Spree成为真正的Rails引擎.事实上,这是我在施普雷聘用时所做的第一项任务.工作在主分支(https://github.com/spree/spree)上,我们希望在圣诞节期间将此代码作为1.0.0.rc发布. 使用此代码,已进行了一些更改.对于初学者来说,Spree现在是一个合适的Rails引擎,这意味着你现在可以将它安装在/ spree或/ shop或者其他任何地方,Spree很酷.其次,所有模型和其他类都是命名空间,因此它们不会与应用程序中的任何内容冲突. 不过,我不确定你对Deface的“聪明”是什么意思.你有什么问题吗?如果要覆盖整个视图,可以通过覆盖app / views / spree / products / show.html.erb中的路径来完成此操作.请注意,这会覆盖整个视图,如果您只想覆盖它的一部分,那么当您使用Deface时. 您是否可以详细说明您在使用Deface时遇到的问题?有兴趣帮你整理一下. 感谢您使用Spree! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |