#72 楼 @dreamable 打算部分组件开源,通用的才会作成 Gem。
nginx 里面
server {
listen 80 default_server;
...
}
让所有域名都指向这个 Rails app,然后路由里面做判断,将二级域名或者其他域名指向 Site 模块下的 Controller
class Sitedomain
def matches?(request)
request.host =~ /^\w+\.writings.io$/ or request.host !~ /writings.io$/ # 刚发现这里一个 != 'writings.io' 就完事了,可以简化。为了方便开发时候测试,writings.io 这个域名最好替换成不同开发环境的常量,或者放到统一的配置文件里面,我目前用配置文件。
end
end
constraints(Sitedomain) do
scope :module => 'site', :as => 'site' do
root :to => 'articles#index'
...
end
end
Site 模块下的 Controller 继承一个 Site::BaseConroller,前置过滤器确定要显示的子站
class Site::BaseController < ApplicationController
layout 'site'
before_filter :require_site
private
def require_site
if request.host =~ /^\w+\.writings.io$/
# 二级域名
@user = User.find_by(:name => /^#{request.subdomain(2)}$/i)
redirect_to url_for(:host => @user.domain) if @user.domain.present? # 已经设置独立域名则跳到独立域名
else
# 个人域名
@user = User.find_by(:domain => request.host)
end
end
end
然后 Site 模块下的控制器处理的都是 @user 这个用户的数据。
#26 楼 @linjunpop 好文章
这样的坏处就是没人会“跟帖”,都会 reply 尽量靠上的那个人。
不要。很难看,现在的 #楼层效果很好。
要补 CSS 知识。
#2 楼 @jokerjiang application.css 里面加这行
label {
display: inline;
}
css
rake db:schema:dump
预编译哪个 js 是要设置的,在 config/environments/production.rb 里面
config.assets.precompile += %w( dashboard.js editor.js site.js )
dashboard layout 里面引用
= javascript_include_tag "dashboard"
如果再加上 Turbolink 可能更难理解了。
js 全部打包在一起,怎么区分不同 action 的逻辑
if ($('body#articles-edit').length) {
// code for ArticlesController#edit
}
layout
body id=("#{controller_name}-#{action_name}")
给个实例
▾ app/
▾ assets/
▸ images/
▾ javascripts/
▾ dashboard/
▸ accounts/
▾ articles/
edit.js
index.js
▸ books/
▸ profiles/
▸ editor/
▾ sitewide/
alert_messages.js
dropdown.js
highlight.js
jquery.cookie.js
modal.js
page_ready.js
rails.validations.js
dashboard.js
editor.js
site.js
预编译顶层的三个 js,dashboard.js, editor.js, site.js,分别对应三个 layout,每个 layout link 一个 js。
dashboard.js 的头
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require mousetrap
//= require_tree ./sitewide
//= require_tree ./dashboard
sitewide 本来打算放全局都要用的 js,后来发现里面有些 js 也不是全局需要的,改名 lib 更好。
我猜是这样,浮点数是底层硬件直接支持运算的类型,默认用精确数的话效率就不一样了。
这个把拼音直接输入的 bug 解决了,不知还有什么别的问题?
https://github.com/writings-io/writings-io/issues/3
今天借到 Mac,才发现之前在 Mac 下一直处于不可用状态。
其实我还是喜欢 Linux。
#26 楼 @aisensiy 在 Canonical 工作的 @tualatrix 就是 Mac 双系统。
#13 楼 @qinfanpeng 真实环境。
Mac 可以装 Linux 和 Windows。

#60 楼 @lidashuang SecureRandom.hex 4 每个用户独立,查询的时候加上用户 id。
#58 楼 @ekim_sgra 可以确保 url 永久可访问,不然 url 标识改了发出去的链接就 404 了。
至于不用数字,是希望用户忘掉文章顺序,专心写好这一篇。
sanitize http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-sanitize
不要用 html_safe
update:上面是 html 的,bash 不熟,等楼下了
#36 楼 @zhulinpinyu 不懂 rspec。在原贴 @ 就行了不要窜主题。