Gem 在 Rails 中做代码高亮,只能依赖 Pygments 这个 Python 写的东东吗?

daqing · 2012年01月08日 · 最后由 Saito 回复于 2012年02月04日 · 6941 次阅读

总觉得不是很理想的方案,对 Python 没有排斥,只是觉得应该有纯 Ruby 的代码高亮工具。

用 highlight_js-rails 高亮代码 http://codecampo.com/topics/381

#1 楼 @Rei 给力! 个人比较喜欢 SyntaxHighlighter,有行数

#2 楼 @richfisher 快去包成 gem~

不是有 CodeRay 之类的么

Rails2 的時代我用的 radiograph 和 Ultraviolet 做代碼高亮。支持 N 多語法,Theme 也有十多個可供選擇,效果如下

js 的方案,暂时不考虑。CodeRay 看上去不错,楼上给了新的方向,感谢大家!

#7 楼 @hisea 很好,这样的方式,目前足够了。

#3 楼 @Rei 分享下包装的方法吧

#9 楼 @camel 仿照目录结构就行了

文章可以看看 [Ruby][教學] 如何打包一個 Asset Gem http://blog.xdite.net/posts/2012/01/04/how-to-pack-a-asset-gem/

#3 楼 @Rei 谢谢,受启发做了一个 gem,syntax_highlighter-rails https://github.com/richfisher/syntax_highlighter-rails

#7 楼 @hisea Markdown 真的不错…想订阅你的 blog,发现好像没实现 RSS?

#12 楼 @tualatrix 好的,我这就去实现。。

#12 楼 @tualatrix RSS 弄好了,欢迎订阅。

Pygments 挺好的啊,何必纠结呢

#15 楼 @hisea 多谢~真迅速啊,不愧是 Ruby 速度。以后还要跟你们好好学习。

#16 楼 @huacnlee 我要学习下你是怎么把 Pygments 跟 Ruby 结合起来的,哈哈。PS:我也决定玩 Ruby/Rails 了,感觉太强大了!

#18 楼 @tualatrix 你要加入 Ruby 社区,那就太有说头了

#18 楼 @tualatrix Ruby 调用 Pygments 简单的方式就是调用 Shell 不过 ruby-china 不是这样做的,用了 pygments.rb 这个 Gem,它是将 Python 签入到 Ruby 里面的(这个我的猜测) https://github.com/tmm1/pygments.rb

#21 楼 @Rei 哇,还有这个东西,太爽了

匿名 #23 2012年01月09日

大家为啥觉得 js 来实现 highlight 不好,我的第一感觉就是用 js 来实现,以前也都是用 js 来实现的 http://softwaremaniacs.org/soft/highlight/en/

用 js 消耗客服端,用 gem 会消耗服务端吧。js 应该比 gem 好维护多很多。

我喜欢服务端的原因是因为可以选择 cache 下来,比如目前 Wiki 里面的 Markdown 结果就是直接以 HTML 存放的,读取的时候前后端都不需要运算了

#16 楼 @huacnlee 在 Rabel 项目中使用,Pygments 会增加部署上的依赖性。

其实要看你的代码高亮是要做什么,如果不是类似 github 这种应用的话,怎么搞都行。

但是如果要做专业的,各种乱七八糟的代码库的高亮的话,其他高亮库跟 pygments 有数量级上的差距。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号