• Rails Variants Tips at 2014年09月13日

    #2 楼 @billy 在具备 Responsive 的情况下依然有使用这个特性的场景,比如 App 内嵌页面,需要展现上做一些特殊处理,但数据结构不变。

  • #6 楼 @flowerwrong 我本意是 height 不设限制,任意多少,保持原图高宽比例。后来发现 minimagick 默认就是这样处理,所以这个问题就作罢。

  • #1 楼 @flowerwrong image.resize "100x100" 这部分我可以只设置 width 不限制 height 吗?保证长宽比例不变。

  • #3 楼 @zj0713001 之前在.NET 平台一直是这样的方案,真没觉得有尴尬。缩图的资源消耗是很少的吧,而且第一次请求肯定是完全在内存里走,不会等磁盘缓存好了之后才返回图片。

  • #1 楼 @flowerwrong 这个只是手动生成,跟需求有区别吧?

  • Capistrano 部署的错误 at 2014年08月22日

    擦,被这问题搞死…… 结贴。 缘由是某个 gem 被移除了,但/app 里依然有废弃代码调用了这个库。只是在 rails server 环境没报错。 问题是,为什么在 Capistrano task 中 eval 执行的代码没有正常的报错呢? run "cd $APP_ROOT; bundle exec rake environment ... " 我把这一行提取出最终执行代码去服务端运行,报错信息就正常了……

  • Capistrano 部署的错误 at 2014年08月22日

    #14 楼 @Rei 我现在通过 echo 标注已经能够确定到是 resque 中 run "cd $APP_ROOT; bundle exec rake environment ... " 这一行的执行错误了。单独执行 run 函数的参数是没有问题的,但我现在看不懂这个 run() 函数是什么作用,能否说明一下?谢谢

  • Capistrano 部署的错误 at 2014年08月22日

    上面没有贴好……

    set -e
    set -u
    
    APP_ROOT=/home/zcj/www/d.baozoubisai.com/current
    USER=zcj
    
    TIMEOUT=${TIMEOUT-60}
    PIDFILE="$APP_ROOT/tmp/pids/resque.%d.pid"
    QUEUES="*"
    COUNT=1
    
    run () {
      if [ "$(id -un)" = "$USER" ]; then
        eval $1
      else
        su -c "$1" - $USER
      fi
    }
    
    case "$1" in
      start)
        for i in $(seq 1 $COUNT); do
          pidfile=$(printf "$PIDFILE" $i)
    
          if test -s "$pidfile" && run "kill -0 `cat $pidfile`"; then
            echo "Worker `cat $pidfile` alread running"
          else
            run "cd $APP_ROOT; bundle exec rake environment resque:work QUEUE=$QUEUES PIDFILE=$pidfile TERM_CHILD=1 BACKGROUND=yes RAILS_ENV=production > /dev/null 2>&1"
            echo "Start worker `cat $pidfile`"
          fi
        done
        ;;
      stop)
        for i in $(seq 1 $COUNT); do
          pidfile=$(printf "$PIDFILE" $i)
    
          if test -s "$pidfile" && run "kill -QUIT `cat $pidfile`"; then
            echo "Stop worker `cat $pidfile`"
            run "rm $pidfile"
          fi
        done
        ;;
      restart|reload)
        $0 stop
        $0 start
        ;;
      *)
        echo >&2 "Usage: $0 <start|stop|restart|reload>"
        exit 1
        ;;
    esac
    
  • Capistrano 部署的错误 at 2014年08月22日

    #16 楼 @hging 确实是 task 有问题 vagrant@vagrant-ubuntu-precise-64:/vagrant$ cap production deploy:resque:restart --trace ** Invoke production (first_time) ** Execute production ** Invoke load:defaults (first_time) ** Execute load:defaults ** Invoke rvm:hook (first_time) ** Execute rvm:hook DEBUG[10348b58] Running /usr/bin/env [ -d ~/.rvm ] on 115.28.233.141 DEBUG[10348b58] Command: [ -d ~/.rvm ] DEBUG[10348b58] Finished in 0.458 seconds with exit status 0 (successful). ** Invoke rvm:check (first_time) ** Execute rvm:check DEBUG[a2c2756a] Running ~/.rvm/bin/rvm version on 115.28.233.141 DEBUG[a2c2756a] Command: ~/.rvm/bin/rvm version DEBUG[a2c2756a] rvm 1.25.28 (stable) by Wayne E. Seguin wayneeseguin@gmail.com, Michal Papis mpapis@gmail.com [https://rvm.io/] DEBUG[a2c2756a] Finished in 0.260 seconds with exit status 0 (successful). rvm 1.25.28 (stable) by Wayne E. Seguin wayneeseguin@gmail.com, Michal Papis mpapis@gmail.com [https://rvm.io/] DEBUG[996c4f83] Running ~/.rvm/bin/rvm current on 115.28.233.141 DEBUG[996c4f83] Command: ~/.rvm/bin/rvm current DEBUG[996c4f83] ruby-2.1.2 DEBUG[996c4f83] Finished in 0.255 seconds with exit status 0 (successful). ruby-2.1.2 DEBUG[ddc0d0e3] Running ~/.rvm/bin/rvm default do ruby --version on 115.28.233.141 DEBUG[ddc0d0e3] Command: ~/.rvm/bin/rvm default do ruby --version DEBUG[ddc0d0e3] ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] DEBUG[ddc0d0e3] Finished in 0.488 seconds with exit status 0 (successful). ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] ** Invoke bundler:map_bins (first_time) ** Execute bundler:map_bins ** Invoke deploy:resque:restart (first_time) ** Execute deploy:resque:restart INFO[df148033] Running /usr/bin/env service resque restart on 115.28.233.141 DEBUG[df148033] Command: /usr/bin/env service resque restart cap aborted! SSHKit::Runner::ExecuteError: Exception while executing on host 115.28.233.141: service exit status: 127 service stdout: Nothing written service stderr: Nothing written /home/vagrant/.rvm/gems/ruby-2.1.1/gems/sshkit-1.5.1/lib/sshkit/command.rb:97:in `exit_status=' 。。。。。

    只是这个 task 一字未改在之前是可用的,服务器上目录也没有任何改动,我不知道是我代码改了其它什么地方导致这个 task 失败

    resque 脚本:

    #!/bin/bash

    BEGIN INIT INFO

    Provides: Campo

    Required-Start: $all

    Required-Stop: $network $local_fs $syslog

    Default-Start: 2 3 4 5

    Default-Stop: 0 1 6

    Short-Description: Start the Campo resque worker at boot

    Description: Enable Campo at boot time.

    END INIT INFO

    set -e set -u

    APP_ROOT=/home/zcj/www/d.baozoubisai.com/current USER=zcj

    TIMEOUT=${TIMEOUT-60} PIDFILE="$APP_ROOT/tmp/pids/resque.%d.pid" QUEUES="*" COUNT=1

    run () { if [ "$(id -un)" = "$USER" ]; then eval $1 else su -c "$1" - $USER fi }

    case "$1" in start) for i in $(seq 1 $COUNT); do pidfile=$(printf "$PIDFILE" $i)

    if test -s "$pidfile" && run "kill -0 cat $pidfile"; then echo "Worker cat $pidfile alread running" else run "cd $APP_ROOT; bundle exec rake environment resque:work QUEUE=$QUEUES PIDFILE=$pidfile TERM_CHILD=1 BACKGROUND=yes RAILS_ENV=production > /dev/null 2>&1" echo "Start worker cat $pidfile" fi done ;; stop) for i in $(seq 1 $COUNT); do pidfile=$(printf "$PIDFILE" $i)

    if test -s "$pidfile" && run "kill -QUIT cat $pidfile"; then echo "Stop worker cat $pidfile" run "rm $pidfile" fi done ;; restart|reload) $0 stop $0 start ;; *) echo >&2 "Usage: $0 " exit 1 ;; esac

  • Capistrano 部署的错误 at 2014年08月22日

    group :development do # Deploy tool gem 'capistrano', '~> 3.1.0' gem 'capistrano-rvm', '~> 0.1.1' gem 'capistrano-bundler', '~> 1.1.2' gem 'capistrano-rails', '~> 1.0.0' end