Homeland 搭建 Ruby China 开发环境 (Vagrant)

Rei for Ruby China · October 15, 2015 · Last by gaolei14 replied at March 02, 2017 · 6361 hits

https://github.com/ruby-china/ruby-china

为了方便大家参与 Ruby China 开发,刚刚给项目添加了 Vagrant 配置。现在可以用 Vagrant 搭建开发环境,步骤如下:

安装 VirtualBox:

https://www.virtualbox.org/

安装 Vagrant:

https://www.vagrantup.com/

然后:

$ vagrant up
$ vagrant ssh
$ cd /vagrant
/vagrant $ ./bin/setup
/vagrant $ rails s -b 0.0.0.0

在浏览器打开 http://localhost:3000

PS:第一次运行 vagrant up 会下载系统镜像和安装系统依赖,根据网速不同可能要半小时以上。

那个镜像有没有可能修改掉,这样可以放到速度快的国内服务器上面

#1 楼 @huacnlee 其实把安装好的镜像重新打包都行,但是我觉得从官方源下载然后安装比较安全和透明。

另外,如果要做得更好,可以用 seed_fu 准备一些默认数据,这样能让新跑起来就有数据,而不是像现在这样空的。

#3 楼 @huacnlee 不用 gem 吧,在 db/seeds.rb 里面用 ActiveRecord 行了。

看到这个ubuntu/precise64,有考虑过升级到 14.04 吗?毕竟已经发布一年多了。

今天试一试,这样方便多了

#1 楼 @huacnlee #2 楼 @rei

个人也觉得能做一个安装好所有依赖且开箱即用的 image 直接 挂 vagrant 放国内服务器上比较好。或者可以搞个选项,那个 ubuntu 国内网络首次安装却是比较恼火...

不好意思,我在執行這個步驟的時候出現這個問題?

vagrant@ruby-china-dev:/vagrant/bin$ ruby setup
setup:11: odd number list for Hash
    red: 31,
        ^
setup:11: syntax error, unexpected ':', expecting '}'
    red: 31,
        ^

我用 vim 開代碼看還是不知道問題出在哪裡?

請大大開示~ m( _ _ )m

9 Floor has deleted
vagrant@ruby-china-dev:/vagrant$ rails s -b 0.0.0.0
=> Booting Puma
=> Rails 5.0.0.beta3 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
=> Memory usage: 156.73 MB
[24430] Puma starting in cluster mode...
[24430] * Version 3.0.2 (ruby 2.3.0-p0), codename: Plethora of Penguin Pinatas
[24430] * Min threads: 8, max threads: 16
[24430] * Environment: development
[24430] * Process workers: 4
[24430] * Preloading application
[24430] * Listening on tcp://0.0.0.0:3000
[24430] * Daemonizing...
Exiting
Exiting
/home/vagrant/.rvm/gems/ruby-2.3.0/gems/rack-2.0.0.alpha/lib/rack/server.rb:362:in `delete': No such file or directory @ unlink_internal - /vagrant/tmp/pids/server.pid (Errno::ENOENT)
    from /home/vagrant/.rvm/gems/ruby-2.3.0/gems/rack-2.0.0.alpha/lib/rack/server.rb:362:in `block in write_pid'

这是为啥,rack 已装

#10 楼 @way_von

$ mkdir -p /vagrant/tmp/pids/

之后再试试启动。

#11 楼 @rei

/home/vagrant/.rvm/gems/ruby-2.3.0/gems/rack-2.0.0.alpha/lib/rack/server.rb:362:in `delete': No such file or directory @ unlink_internal - /vagrant/tmp/pids/server.pid (Errno::ENOENT)
    from /home/vagrant/.rvm/gems/ruby-2.3.0/gems/rack-2.0.0.alpha/lib/rack/server.rb:362:in `block in write_pid'
vagrant@ruby-china-dev:/vagrant$ cd tmp/pids
vagrant@ruby-china-dev:/vagrant/tmp/pids$ ls
vagrant@ruby-china-dev:/vagrant/tmp/pids$ 

下面没有 server.pid

#12 楼 @way_von server.pid 是 server 启动后生成的,这个我也不知道什么情况。

#12 楼 @way_von 配置里写的是 tmp/pids/puma.pid 啊,你用的是最新的代码吗?

#14 楼 @rei 今早下的代码

puma.rb 部分代码如下

app_root = '/home/ruby/www/ruby-china/current'
pidfile "#{app_root}/tmp/pids/puma.pid"
state_path "#{app_root}/tmp/pids/puma.state"
bind "unix:/tmp/unicorn.ruby-china.sock"

@huacnlee 现在开发环境是怎么启动的?我移除 config/puma.rb 后就能启动。

#16 楼 @rei 和 rails 版本有关系么

#17 楼 @way_von 应该和 puma 3.0 有关。

#18 楼 @rei 开发环境 rails s 启动之后出了两个 Exiting 就结束了,如果把 config/puma.rb 删掉再启动,localhost 能看到报错页面

#8 楼 @origin10 我也遇到这个问题。

赞同放到国内。翻墙到国外去下实在费流量。

不知道最新版的 vagrant box 镜像是否是打包好了所有安装组建的。

现在 homeland 的 vagrant 还维护么?从 github 上下载最新的代码,使用 vagrant up,./bin/setup 后在 db:seed 的时候出现异常

NoMethodError: undefined method match?' for "section_node_updated_at=":String /vagrant/app/models/cache_version.rb:14:inrescue in method_missing' /vagrant/app/models/cache_version.rb:11:in method_missing' /vagrant/app/models/section.rb:15:inupdate_cache_version' /var/lib/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:382:in block in make_lambda' /var/lib/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:207:inblock in halting_and_conditional' /var/lib/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:456:in `block in call'

Reply to gaolei14

不维护了,建议用 docker,我晚上再清理代码。

Reply to Rei

homeland 的开发环境搭建有说明流程么?在 github 上没有找到说明

Reply to gaolei14

解决,使用 ruby2.4

You need to Sign in before reply, if you don't have an account, please Sign up first.