• 之前学习 Rails 的路径可能不对。Rails 对于我这样一个业余的、时间精力有限的开发者来说,实在太复杂、变化太快了。不管是开发、部署还是维护,Rails 总能给我带来各种问题,让我陷入困境。 回过头来看,正确的学习路径也许是 Ruby→Sinatra→Padrino→Rails。一门一门学习,一门一门掌握,一门一门精通,直至融会贯通,不管面对怎样的开发需求,都能游刃有余。 发现问题,及时调整,什么时候都不晚。现在就开始学习 Sinatra 吧,简单的需求,本来就应该用简单的工具、简单的方法来满足!

  • Ruby 25 岁生日 #ruby25 at 2018年02月24日

    祝 Ruby 生日快乐!😀

  • 不过不光是你的中奖概率降低了,别人的中奖概率也同样降低了,所以说到底还是公平的 😀

  • Mina 升 1.0 后的差异 at 2017年03月27日

    提供一个可用的 Mina 1.0 的配置文件:

    require 'mina/bundler'
    require 'mina/rails'
    require 'mina/git'
    require 'mina/rvm'
    require 'mina/puma'
    require 'mina/logs'
    
    set :domain, 'www.haijia.org'
    set :user, 'deploy'
    set :deploy_to, '/home/deploy/www.haijia.org/haijia'
    set :repository, '[email protected]:chinakr/haijia.git'    # private repository
    set :branch, 'master'
    
    set :shared_dirs, fetch(:shared_dirs, []).push('public/upload', 'tmp/sockets', 'tmp/pids', 'db/production')
    set :shared_files, fetch(:shared_files, []).push('config/database.yml', 'config/secrets.yml')
    
    desc 'Set up environment.'
    task :environment do
      invoke :'rvm:use', 'ruby-2.4.1@rails5'
    end
    
    desc 'Prepare for deployment.'
    task :setup do
      in_path "#{fetch(:shared_path)}" do
        ['config/database.yml', 'config/secrets.yml'].each do |file|
          comment %{Be sure to edit 'shared/#{file}'.}
        end
      end
    end
    
    desc 'Deploy current version to the server.'
    task :deploy => :environment do
      deploy do
        invoke :'git:clone'
        invoke :'deploy:link_shared_paths'
        invoke :'bundle:install'
        invoke :'rails:db_migrate'
        invoke :'rails:assets_precompile'
        invoke :'deploy:cleanup'
    
        on :launch do
          invoke :'puma:start'
          invoke :'puma:phased_restart'
        end
      end
    end
    

    需要注意的是 https://github.com/mina-deploy/mina/blob/master/tasks/mina/bundler.rb 中已经包含了 set :bundle_path, 'vendor/bundle',所以在设置 shared_dirs 要使用 set :shared_dirs, fetch(:shared_dirs, []).push('tmp/sockets', 'tmp/pids') 而不是 set :shared_dirs, ['vendor/bundle', 'tmp/sockets', 'tmp/pids']。这样就不会出现 mina deploy 时每次都重新 bundle 的问题了。

  • 《Rails 指南》发布 at 2017年02月26日

    谢谢,是五笔输入错误,已把修正推送到 GitHub,thx a lot!

  • 《Rails 指南》发布 at 2017年02月23日

    非常抱歉,这一章按计划是由我负责翻译的,还需要一些时日才能出炉,不好意思让您久等 👣

  • 原来是要使用fetch(:deploy_to)代替#{deploy_to}

    task :setup do
      ['log', 'config', 'public/upload', 'tmp/pids', 'tmp/sockets'].each do |dir|
        command %{mkdir -p "fetch(:deploy_to)/shared/#{dir}"}
        command %{chmod g+rx,u+rwx "fetch(:deploy_to)/shared/#{dir}"}
      end
    
      ['config/database.yml', 'config/secrets.yml', 'config/puma.rb'].each do |file|
        command %{touch "fetch(deploy_to)/shared/#{file}"}
        comment %{Be sure to edit 'shared/#{file}'.}
      end
    end
    
  • “布署”是不是应该改为“部署”?

  • 作为 Sublime Text 和 Atom 文本编辑器“重度 + 初级”用户,报名捧场...

  • TextMate 2 进入 RC 了 at 2016年11月15日

    Sublime Text 3 和 Atom 好像已经足够好了。错过了 TextMate 的时代,遗憾...

  • 机器是好机器,我想要这样的机器,只是价格翻了一番,再不赚钱连这个吃饭的家伙都买不起了...

    ¥28900

    新款 MLH42 深空灰/新款 MLW82 银,带 touch bar 定制机

    LED 15.4Retina 16G ddr3 2T SSD

    2.9GHz 四核 Intel Core i7 Turbo Boost 加速至 3.8GHz

    Intel 530、Radeon Pro 460 4G 显存、USB-C*4、

    2880*1800 分辨率、Force Touch 触控板、1.83kg

  • 找一位 Rails 指南合译人 at 2016年10月31日

    #10 楼 @mingyuan0715 👍 翻译不易,翻译出好作品更是难上加难,作为《Rails 指南》和《Ruby on Rails 教程》的读者,向 Andor Chen 的辛勤工作致敬!

  • 报名~ 希望大家多分享 Rails 和创业的故事 😄

  • 学习实践,大步前进 👍

  • 已购买 👍

  • #32 楼 @hxh1246996371 这确实是一个好办法 👍

  • RubyConf China 2016 赞助征集 at 2016年06月29日

    #2 楼 @lyfi2003 支持一个金牌赞助商吧 😀

  • #30 楼 @hxh1246996371 此话不假,然而从使用体验上看,这就像 Django 和 Rails 的差别

  • 选择 Bootstrap 还是 Foundation?

    Bootstrap 是 Twitter 员工开发的,Foundation 是 Zurb 公司的产品,两者都是开源的响应式框架,都得到了广泛应用。相比之下,Twitter 的名气无疑比 Zurb 要大得多,因此很多人在做这道选择题时,会毫不犹豫地选择 Bootstrap。然而事实上,Foundation 的语法比 Bootstrap 更简洁、更清晰、更优雅,也更容易实现自定义风格。因此,我个人推荐 Foundation。

    以表单为例,Bootstrap 的代码:

    <form>
      <div class="form-group">
        <label for="name">Name</label>
        <input type="text" class="form-control" id="name" placeholder="Name">
      </div>
      <div class="form-group">
        <label for="email">Email</label>
        <input type="email" class="form-control" id="email" placeholder="Email">
      </div>
      <button type="submit" class="btn btn-default">Submit</button>
    </form>
    

    Foundation 的代码:

    <form>
      <div class="row column">
        <label>Name
          <input type="text" id="name" placeholder="Name">
        </label>
        <label>Email
          <input type="email" id="email" placeholder="Email">
        </label>
        <button type="submit" class="button">Submit</button>
      </div>
    </form>
    

    再以导航栏为例,Bootstrap 的代码:

    <nav class="navbar navbar-default">
      <div class="navbar-header">
        <a class="navbar-brand" href="#">Site Title</a>
      </div>
      <ul class="nav navbar-nav">
        <li><a href="#">Item One</a></li>
        <li><a href="#">Item Two</a></li>
        <li><a href="#">Item Three</a></li>
      </ul>
    </nav>
    

    Foundation 的代码:

    <div class="top-bar">
      <div class="top-bar-left">
        <ul class="menu">
          <li class="menu-text">Site Title</li>
          <li><a href="#">Item One</a></li>
          <li><a href="#">Item Two</a></li>
          <li><a href="#">Item Three</a></li>
        </ul>
      </div>
    </div>
    

    可以看到,相比之下 Foundation 的代码更简洁,在页面结构更复杂、代码量更大的情况下,这会带来显著的好处。

  • #5 楼 @u1370743666 可是通常文章哪有“目录,摘要,后记”这些东西呢 😋

  • #3 楼 @anthonyhl 这个付费阅读是针对文章而不是针对电子书的,针对电子书的多看阅读已经做得很好了。

  • Working with Mac at 2016年06月26日

    #11 楼 @lihuazhang duet display 也看到了,当时没有选择,原因想不起来了。Air Display 3 用数据线连接一台 iPad mini 2,效果比较完美,不卡顿。

  • Working with Mac at 2016年06月26日

    #9 楼 @littlell 很早以前我就梦想把 iPad 作为电脑的第二块屏幕,Air Display 3 帮我实现了这个梦想。用 98 元就实现了一个梦想,我觉得很值呀,呵呵。

  • Working with Mac at 2016年06月26日

    #7 楼 @lihuazhang Air Display 3,使用挺简单。

  • #43 楼 @yort_feng 基于朋友圈的熟人分享可能会好一点,类似于打赏

  • Working with Mac at 2016年06月26日

    #3 楼 @pynix 设备不浪费啊,回头把 360 手机旗舰版换成 iPhone 7,再看看是不是把手机也连上来。

  • Working with Mac at 2016年06月26日

    #2 楼 @embbnux 对,通过 USB-Lightening 线连接,实现屏幕扩展。之前用 Dell 的外接显示器,有色差,看时间长了眼睛很难受。改成全套 Apple 方案后,问题比较完美地解决了。