写点什么

文章:使用 Ruby DSL 实现敏捷素材管理

  • 2007-09-26
  • 本文字数:606 字

    阅读完需:约 2 分钟

领域特定语言(Domain Specific Language,简称 DSL)是一个面向语言的工具,用于解决某个特定领域的编程任务。DSL 的一般语言特征和它所被用到的问题领域,关系是非常密切的,并且在一个非常高的抽象层面上起作用。Martin Fowler 在他介绍 DSL 的文章中,将 DSL 划分为外部 DSL 和内部 DSL 两类(参见原文链接)。外部 DSL 是一门需要编译或者解释运行的编程语言,而内部 DSL 则构建于一门通用编程语言(general-purpose programming language)之内。实际上,内部 DSL 对于其宿主通用编程语言来说,就是它的一套层次非常高的 API。本文讲述了了在 PLANET ARGON 公司的一个开发项目中,用 Ruby 实现的一个内部 DSL 如何给项目带来巨大贡献。

文章从实际出发,先介绍 PLANET ARGON 公司近期要完成的一个项目。这个项目的目标是,使用 Ruby on Rails 构建一个一次性的内容管理系统,这个系统要支持 18 种语言,并且管理大约 1000 个的图像文件。这些文件中有许多都是专业摄影图片,每个文件大小都超过 1MB。而另外的图片文件则是一些细碎的线条艺术,图片里面显示的就是许多不同的国旗。这些图片所具备的相同特点,就是它们都还不能直接投入产品使用。

听起来这个项目就够复杂的了,作者开始的时候使用了钩子在模型内部操作 API,但随着需求的不断被调整,即使在项目中使用批处理脚本也不能满足这些变化。在本文中,作者提供了一个解决此问题的可持续发展的方式。

阅读全文:使用 Ruby DSL 实现敏捷素材管理

2007-09-26 04:571213
用户头像

发布了 117 篇内容, 共 21.1 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

为什么中间件协议对区块链生态系统至关重要?

CECBC

苹果iOS内购三步曲:App内退款、历史订单查询、绑定用户防掉单!--- WWDC21

37手游iOS技术运营团队

ios wwdc 苹果退款 appstore WWDC21

很多小伙伴问我推荐什么书籍和网课,这次把私藏很久的资料都贡献了(上)

C语言与CPP编程

Java c++ C语言 数据结构与算法 #python

JavaScript 学习(四)

空城机

JavaScript 大前端 6月日更

Java Selector模型

邱学喆

buffer selector SelectableChannel SelectionKey

【21-10】PowerShell 日期和时间

耳东@Erdong

PowerShell 6月日更

Taro3无埋点的探索与实践

GrowingIO技术专栏

taro AST sdk 无埋点 babel

MySQL基础之十五:索引

打工人!

MySQL 6月日更

鸿蒙 和 Fuchsia OS,你更期待谁?

Bob

华为 Google 作业一 Fuchsia 鸿蒙系统

运维大佬嘲笑我,这个你都不知道?

李阿柯

redis 面试 运维自动化

Flink State 和 Fault Tolerance(一)

Alex🐒

flink 翻译 flink1.13

网络攻防学习笔记 Day47

穿过生命散发芬芳

网络攻防 6月日更

SpringCloud Gateway 动态路由

中原银行

微服务 SpringCloud Gateway 中原银行

并发王者课-铂金2:豁然开朗-“晦涩难懂”的ReadWriteLock竟如此妙不可言

MetaThoughts

Java 多线程 并发

🌏【架构师指南】分布式ID生成算法技术总结

码界西柚

分布式ID 6月日更

如果把四个消息队列都拉到一个群里,他们会聊些什么?

悟空聊架构

故事 消息队列 群聊 6月日更 悟空聊架构

致翻译界最可爱的许老

Qien Z.

翻译 6月日更

校外培训行业迎来强监管,“教育+区块链”新模式试图解决行业痼疾

CECBC

前端 JavaScript 之『防抖』的简单代码实现

编程三昧

JavaScript 编程 大前端 防抖 函数节流

Low-Code能否威胁到专业的程序员?| 话题

三掌柜

试用期 签约计划 人气作者 TOP10

模块六作业

Chris Cheng

架构训练营

有了这个组合拳,不再写bug

看山

DevOps 6月日更

「SQL数据分析系列」6. 使用集合

Databri_AI

sql 集合

Kubernetes手记(14)- 用户权限系统

雪雷

k8s 6月日更

Fuchsia OS vs Harmony OS 谁是下一个领跑

三掌柜

试用期 签约计划

数据库事务与锁详解

阿骆麦迪

MySQL 事务 6月日更

“懂行”共识拓宽数字通道:川蜀大地与智能时代的“热辣”共振

脑极体

为什么 StringBuilder 不是线程安全的?

xcbeyond

StringBuilder StringBuffer 6月日更

react源码解析15.scheduler&Lane

全栈潇晨

React

C++友元的概念和使用的一些介绍

良知犹存

c++

【Vue2.x 源码学习】第十七篇 - 生成 render 函数 - 函数生成

Brave

源码 vue2 6月日更

文章:使用Ruby DSL实现敏捷素材管理_Ruby_Jeremy Voorhis_InfoQ精选文章