新手问题 搭建环境篇——遇到的问题以及解决方案

satoshigi · 2013年11月19日 · 最后由 qiangwaikan 回复于 2020年12月08日 · 15743 次阅读

记录一下我在搭建环境时出现的问题,我相信会有新手和我一样遇到这样的问题。😄

说一下环境:ruby 版本 2.0.0p247,rails 版本 4.0.0。

说一下学习 ruby on rails 的目的:我现在是大二的学生,因为各种原因开始了一个项目,要用到的是我从来没听过的 ruby on rails,我甚至连网络框架都是第一次听,在学习 ror 之前我只学过 C 语言和数据结构以及语言是 C++ 的游戏引擎而已,我相信如果我真能学会 ror 的话,这会是一个相当励志的故事。希望各位社区的大牛们多多指教,如果我会知道新手问题的答案的话,果断帮忙。(我很渣也不知道会不会的其实)😨

1.因为看到有个帖子说前往不要在 windows 下开发,所以我就奔去安装 linux 了,我安装的是 deepin linux 12.12.1,但是貌似我的电脑(联想 Y410P)和这个系统不兼容,然后我开了一个小时机才进入桌面,这个问题到现在也不能解决,不过进入系统之后不卡就先放下这个问题了。(如果有人遇到这个问题,成功解决掉的话分享一下,不甚感激)😂

2.按照 Ruby on Rails 實戰聖經,安装了 ruby,然后用

$ gem install rails --no-ri --no-rdoc

遇到问题了,老是报这样的错😭

ERROR:  Loading command: install (LoadError)
    cannot load such file -- openssl
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

装了很多次都是报这个错,都是不行,最后灰心意冷的我重装了 ruby,然后竟然神奇的没再报这个错了。 不过你以为搭建一个环境容易吗?不报错也别开心太早。因为它不报这个错就会报下一个错的。😱

3.然后就出现接下来的问题了

Could not find a valid gem 'rails' (>= 0) in any repository

各种泪目,我就只好去找度娘,度娘高深莫测地说,孩子你要翻墙,才能得到救赎。问题是我才刚装了 liunx 没多久,怎么要用终端翻墙(我觉得下载都是在终端所以翻墙也是要终端翻吧),太高端了,我终觉得是安装方式有问题才搞得这么麻烦,所以我依葫芦画瓢按照 wiki 上的如何快速正确的安装 Ruby, Rails 运行环境来了一遍http://ruby-china.org/wiki/install_ruby_guide,最后

gem install  rails

成功了, 😎 。搞了这么久就是这个,所以说要多看看 wiki 诶

4.安装了这么久当然要去弄一个 helloworld 什么的,这 helloworld 不去弄一下,总觉得自己没学过这东西一样。之前搞游戏引擎的时候也就是成功弄出了 helloworld 之后就觉得自己学会引擎一样特有成就感,我想着这 ruby 应该也是要这样。所以果断

$ mkdir projects
$ cd projects
$ rails new demo

然后

$ bundle install

然后犯难了

Bundler::GemfileNotFound

这是怎么闹,魂淡,不就建个 helloworld 而已,不用这么折腾我吧。我又跑去找万能的度娘,然后度娘喷了我一脸,你傻逼啊,你都不进去文件夹 bundle 毛线。好,我错了。

$ cd demo

5.我以为这就是最后的考验,没想到,bundle 就遇到这样的问题了

An error occurred while installing coffee-script-source (1.6.3), and Bundler
cannot continue.
Make sure that `gem install coffee-script-source -v '1.6.3'` succeeds before
bundling.

我就按照他的指示

$ sudo  gem install coffee-script-source -v '1.6.3'

没多久又报了差不多的错,我 bundle 了一个小时还没完,找度娘,度娘嫌我太笨没告诉我问题所在,灰心丧气外加作死赌气之下敲了

$ sudo bundle install

好吧,其实前面个也有说权限问题,由于报错的我就只看着红色字体然后自动忽略掉了😓

6.好吧,终于可以到神圣的

$ rails s

了,但是我这真心曲折,又遇到了新问题

Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

不过这个问题一上网找就能找到解决方案了,直接在 Gemfile 里面加入

gem 'therubyracer'
gem 'execjs'

然后就成功了(喂,还要 bundle 一次吧,别和谐掉关键字啊)

7.我在 view 上补充了一些东西,然后再

$ rails s

又报了

Address already in use - bind(2) (Errno::EADDRINUSE)

的错。这明显就是你打电话过去然后智能客服姐姐告诉你,你在拨打的电话正在通话中的节奏,重点的还是和对方通话中的就是你自己另一台手机。这里有两种做法,一种就是直接用你正在通话中的手机,另一种就是你挂掉那个正在通话的手机再拨打一次电话过去。这很明显第二种方法是脑袋有洞的做法,但是这样的做法我持续了一个礼拜才意识到这是有病的做法。不过当你是要换一个工程的时候还是需要 kill 掉连接的吧,所以还是贴一下步骤。

$ netstat netstat netstat -ntlp | grep 3000
$ kill -9 ×××(***就是上一个命令最后那个数)

8.之后我按照之前的 Ruby on Rails 實戰聖經,依葫芦画瓢,scaffold 鷹架功能會自動產生一組 Model、Views 跟 Controller 程式碼,

$ rails g scaffold person name:string bio:text time:string
$ bundle exec rake db:migrate

问题是没有弹出应该弹出来的东西(确切来说是什么都没有弹出来),我也没有管太多,直接 rails s 然后主页君就爆出要我去执行一下

rake db:migrate RAILS_ENV=development

执行一下,然后就爆出错误

We're sorry, but something went wrong.
If you are the application owner check the logs for more information

此时此刻内心汹涌出 N 只羊驼,敲个代码这容易么我。 但是我还是执着的跑到 log 文档看看,然后 log 最后一行说 time:string 是不合法的,要么删掉要么就改一下格式

还有一种错法是主页显示

NoMethodError in StudentCoursesController#create
undefined method `Classroomnumber' for #<StudentCourse:0xb994811c>

Extracted source (around line #30):
    respond_to do |format|
      if @student_course.save
        format.html { redirect_to @student_course, notice: 'Student course was successfully created.' }
        format.json { render action: 'show', status: :created, location: @student_course }
   else

这个时候我就大概知道 classroomNumber 写成 Classroomnumber 了。错多了就习惯了。

😲 😲 😲 😲总之搞到现在,内心是各种挫败感交集,学习之路一片渺茫 😢 😢 😢 😢 😢 😢还有,请大牛们不要喷我这些低级错误,刚入门啥都不懂

学习找谷儿歌啊,谈朋友才找度娘

#1 楼 @winnie 度娘不搭理我的时候,我就会去找谷儿歌谈人生😨

#2 楼 @satoshigi 度娘是当你科学上网后发现有些网站依然无法打开的时候,用来验证的本地网络是否正常的。

孩纸 rails 学习曲线非常的陡 你遇到的只是小坑而已 一定要学会用 google 和科学上网 最后 祝你成功 你已经很棒了

这里用 Mac 的太多了,可能用 Linux 的是少数,所以 wiki 上也是教你如何在 Mac 上如何初始化开发环境,如果你用 Linux 的话,我建议你从 Ubuntu 12.04 TLS 开始,遵照这篇文章初始化你的开发环境。

https://www.digitalocean.com/community/articles/how-to-install-ruby-on-rails-on-ubuntu-12-04-lts-precise-pangolin-with-rvm

这里有一篇 For Ubuntu 13.10 的,看起来更新一点: http://gorails.com/setup/ubuntu/13.10

#6 楼 @lgn21st 谢谢你,人间有爱啊。😊 这个我要消化一下😱 自从开始 ror 我发现我英语阅读水平提高了`````

#4 楼 @zj0713001 😱我觉得很曲折很容易在小坑上耗时间

#8 楼 @satoshigi 多写写就好了 真心的 不是因为坑小了 是因为习惯了 😄

用虚拟机是个很不错的主意,如果以前没有用过 *nix 的话。

话说 virtualbox 还是很好用的,虽然现在在 oracle 手里。

之前一直用 Ubuntu 的时候打起环境来十分的爽快,前天换成 mbp 之后,到现在还没搞定……

#11 楼 @appell 我在 win8 下装过虚拟机,deepin linux 在 virtualbox 没有桌面,打不开终端,所以我最终放弃了

#12 楼 @messiahxu ubuntu 的桌面可以弄得很霸气,个人感觉,而且貌似找 ubuntu 相关的资料容易一些。

#14 楼 @satoshigi 是啊,所以有点后悔申请了 mbp 的说……

#15 楼 @messiahxu 我看到你的帖子,你在弄 ajax 吧,我也是,求指导

#15 楼 @messiahxu 😂入门不容易诶````

#15 楼 @messiahxu @Rei 的入门向导链接失效了。不知道从哪里入手入门。

刚写好一篇完整环境搭建 (ubuntu linux in vagrant) 的博文,希望对你有帮助 http://jwu.logdown.com/posts/160218-how-to-set-up-the-development-environment-along-with-some-other-stuff

#20 楼 @jwu 其实环境搭建好了,后面那个 git 我觉得会有用,收藏起来备用,谢谢你~

#21 楼 @Rei 真的真的真的非常感谢!!!!!!!我没发多久就有回复了,好感动!!!

关于 Linux 版本,从我体验来说 LinuxMint 比 Ubuntu 好,Ubuntu 经常崩溃。。。不过现在转到 arch 了,真心喜欢。rails 开发环境照着论坛上的 wiki 做的,没遇到任何问题。

我刚学 rails 的时候比你还惨

Ubuntu……如果要用源里的东西……一切都很好……

但是想自己更新点东西……-_-……

关于翻墙浏览如 Google 等,小弟看网路上应该有些比较简单的方式,如 VPN, SSR. 不过这类东西说实在也是因为墙随时都在更新导致在每个时期能用的软件与翻墙方式有些许差异,这边推荐一篇文 给各位,我看里面频繁更新最新的翻墙方式

在最新版的 Windows 10 上现在也可以运行 Ubuntu 了,如果用 Windows 作为 Ruby 的开发工具,可以试试 Windows 自带的 Unbuntu。当然如果遇到网络资源被墙问题,还是需要一些翻墙软件的帮助。

Linux 上安装软件坑多,关键时刻还是要用翻墙 VPN,去谷歌查资料要方便得多,百度准确率要差得多。

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