gpt4 book ai didi

ruby-on-rails - 作为可安装引擎的 spree

转载 作者:行者123 更新时间:2023-12-05 00:36:04 27 4
gpt4 key购买 nike

因此,我们希望将我们网站的一部分重新构建为 Rails 应用程序。最初的计划是拥有一个主要的“站点”应用程序,其中包含许多具有分区功能的插件应用程序(Rails 3.1 引擎)——一个商店组件、一个社交/论坛/聊天组件等。此外,我们想放置主题/styling 在 gem 中,这样我们的 Web 设计师就可以修改站点外观和一些小的布局调整,而无需“了解 Rails”。最初,这进展顺利;我们创建了主要的架构和插件以及主题 gem ,它们都很好地结合在一起;像 auth 这样的横切功能被放置在主“站点”应用程序中,并且由插件应用程序使用,为我们提供站点的单点登录(设计要求)。

我们对商店组件的最初计划是使用 Spree (http://spreecommerce.com/),因为它具有我们需要的 95% 以上的开箱即用功能。但是,有一个问题——Spree 作为可安装的引擎分发,但它也是一个应用程序。这意味着不仅 Spree 安装在应用程序中(这不是问题,实际上这是我们指望的行为),而且它 取决于对主应用程序的控制 .研究这种行为的“原因”,它似乎取决于两个核心功能。第一个功能块是一些必须进入中间件的 SEO 永久链接重写功能;我们可以修改一些东西,以便我们的主应用程序包含这块代码(即使这会开始在我们的整个站点中纠缠商店功能,使“Spree 作为可安装引擎”的故事变得困惑……稍后会详细介绍)。

更复杂的是 Spree 使用 Deface 进行主题和定制。虽然这很“聪明”(注意引用),但它确实让 Spree 的集成变成了一场噩梦;要么你走阻力最小的道路,让 Spree 成为一个完整的商店(这完全打破了我们的故事“商店只是我们网站的一部分,并且与网站的其余部分很好地配合,包括身份验证、主题等.”),或者你必须破解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 开发人员,我们喜欢您的代码,但是否正在做任何工作使其成为 真实的,真实的 Rails 引擎,而不是恰好将其所有功能打包到引擎中的独立应用程序?如果无法将其集成到现有站点中(包括不“拥有”该应用程序,能够将 所有 的路由分区,等等),我们就无法使用它: (

TIA。

最佳答案

我是 Spree 的社区经理,所以我想我可以回答你的问题。

是的,正在进行的工作将使 Spree 成为真正的 Rails 引擎。事实上,这是我在被 Spree 聘用时所做的第一个任务。工作在 master分支(https://github.com/spree/spree),我们希望在圣诞节前后将此代码作为 1.0.0.rc 发布。

使用此代码,进行了一些更改。首先,Spree 现在是一个合适的 Rails 引擎,这意味着您现在可以将它安装在/spree 或/shop 或/whatever 上,Spree 很酷。其次,所有模型和其他类都是命名空间的,因此它们不会与您的应用程序中的任何内容发生冲突。

不过,我不确定你所说的 Deface“聪明”是什么意思。你认为这会带来什么问题?如果你想覆盖整个 View ,你可以通过覆盖 app/views/spree/products/show.html.erb 中的路径来实现。 .请注意,这会覆盖整个 View ,如果您只想覆盖其中的一部分,那就是使用 Deface 时。

您能否详细说明您在使用 Deface 时遇到的问题?有兴趣帮你整理一下。

感谢您使用 spree !

关于ruby-on-rails - 作为可安装引擎的 spree ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582715/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com