主题为Spree装置;造成污损的噩梦

时间:2013-10-10 14:36:45

标签: ruby-on-rails ruby styling spree deface

首先在Programmers.SE上输入,但想象一下这可能更适合这里 - 纯粹是因为它不是要求就特定技术问题提出建议。随意投票移动!

我目前正在使用适用于Ruby on Rails的“Spree”电子商务平台开展项目。配置和使用是一件非常愉快的事情。然而,欢乐在那里停止了。

我正在尝试开发一个完全自定义的界面 - 与默认配置完全不相似的界面。现在Spree文档显示我只有两个选项:

  1. 使用deface覆盖。到处。似乎要覆盖其他覆盖。
  2. 完全重建视图。
  3. 当然,使用污点的风格如此戏剧性的变化是一个完整的噩梦; Deface看起来不像是一种可以接受的方式来重写一个完整的UI;它似乎也没有效率。所以我选择完全重建视图。

    然后实现了大约8个插件全部依赖于污损覆盖,视图文件硬编码,目标选择器通常是' flakey '(充其量)。

    除了狂热网站上非常小的documentation之外,我所能找到的都是来自各种会议的幻灯片,其中 - 没有谈话的背景实际上是最小的用途。他们似乎都专注于使用污损覆盖进行大致简单的更改,而最近的更改似乎已超过一年。

    我错过了什么吗?有谁知道执行这样的事情的最佳做法?我应该在哪里寻找?

3 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,正如你所说,当有很多插件使用deface时,最好使用deface而不是覆盖整个视图。 花了一些时间才知道狂欢的圣地和除了文档之外的指南是狂欢的github sourcecode。文档中缺少任何内容。

如果要覆盖视图,有两种方法:

1)您想要使用新视图完全覆盖它。在这种情况下,我建议不要更改现有源代码中使用的现有结构并添加新的更改。这样你仍然可以使数据钩子可用于其他插件,具体取决于视图的html代码结构和标签。

2)使用Deface。如果没有足够的文档,那么开始使用Deface有点噩梦。开始使用Deface的最佳方法是github。 在Deface替换之后测试新视图代码的最重要的实用程序是使用rake任务。 要查看使用标记选择的元素,请使用: rake deface:test_selector['spree/address/_form','p'] - 这显示了在相应视图partial中使用p的所有元素。 要查看原始的部分用途:

rake deface:get_result[shared/_head]

这些在deface的github中提到但是这些非常方便,因此强调。

答案 1 :(得分:4)

污损是一场巨大的灾难。整个概念是一个巨大的反模式,它导致了一个完整的,完全的,不可摧毁的噩梦。我真的希望Spree社区能够远离它,尤其是插件,并为应用程序内的视图级自定义提供更好的选择。

不使用Spree中的Deface的最大缺点是您的自定义代码偏离了Spree' stock'查看代码,并且当您升级spree时,您有两个不同的(您的自定义和spree默认)版本,以协调每次spree升级。而且你必须逐个文件地完成。

这很乏味,但我通过插入评论并开始定制代码来让自己变得更容易一些。并且'结束自定义代码'在每个视图中我都使用我自己的代码混合了spree默认代码。这使得升级过程更加顺畅,但仍然没有简单的答案。

如果Winston Churchill是Rails开发人员,他会说" Spree中的查看覆盖是最糟糕的自定义形式,除了所有其他人。"

答案 2 :(得分:3)

继狂欢用户邮件列表上的discussion之后,普遍的共识似乎是:

  

最好的选择是废弃所有视图覆盖的污点 - 这就是   最好通过分叉狂欢前端来实现。

     

关于插件,事情并不简单 - 如果不是这样的话   可以保持数据挂钩然后我只需要禁用覆盖   并直接在视图中实现它们。

不是很好,但两个邪恶中的较小者。通过使用污点进行如此戏剧性的改变,你会发现自己陷入了混乱。

讨论还包括一位开发人员提到(非常好的想法)在执行此操作后利用Capybara进行测试,以确保一切仍然正常。每次更新后都会有维护,这就是@ Lavixu的答案试图避免的 - 在一个理想的世界里,他会被发现并且可以用来破坏这个......

对于不那么剧烈的变化,我建议每次都使用deface,而Lavixu提到了一个关于测试污损覆盖的非常好的提示。

不幸的是,事情并非那么简单。如果你发现自己处于这种情况,可能值得阅读上面的讨论,这非常有帮助。