`
tntyao
  • 浏览: 10749 次
  • 来自: ...
社区版块
存档分类
最新评论

Mysterious X Project 神秘的 X 项目转

 
阅读更多
话说有天在梦里我上了中国达人秀,

周立波:你叫什么名字?
我:我叫XXX,来自台湾台北。
周立波:你从事什么职业?
我:我是一名业馀的小码农,从事网络开发。
周立波:哇,就是那种专门写代码的那种?
我:对对对,我会经常从我家到公司写代码,直接写到明晨清早。
周立波:一次是多少行代码?
我:一次是大概不到 4000 行代码。
周立波:是用 Ruby 还是 PHP?
我:PHP。
周立波:。。。。。。。。非常辛苦!
我:我每个月大概有二十二三天,都在公司写代码,特别的孤独。就是在我最孤独的时候,我就听著我喜欢听的音乐,每天每时每刻,都是这样度过的。
周立波:你觉得人在码途之中是种什么感情?
我:我就是感觉我,编著码的时候,我低头的时候,看到的是我的代码,我抬头的时候,看见的是我的梦想。
周立波:呦哦,哎唷,很有湿人情怀,他低头的时候是他的代码,抬头是你的梦想,那么来表演什么节目呢?
我:我…今天带来一首,我编程时经常唱的一首歌。苍井空老师的,第二梦。
周立波:。。。。。。。。。。。。。开始你的表演。
主持人:在四千多行的代码当中,会出现什么样的声音?来安慰他自己呢? 视频连结

然而,就在此时,

突然手机响了(点按聆听)

手机铃声在不寻常的时间吵醒了我,半梦半醒中接起了这个就不该接的电话。。。

我:嗯,你谁阿?
?:腰饿三宁六
我:。。。谁?
?:腰-饿-参-宁-六
我:呃。。。不好意思这...能说国语吗?
?:先生您好,我们这里是铁道部。
我:(心想)擦,该不会上次去参加中国达人秀的时候,搭车逃票被抓了吧。。。
我:嗯,有什么事吗?
12306:先生您好,不知您有没有建置网站的意愿,有道是新浪微博、推特各种乱象,目前单位正秘密招人进行开发一个 新微博 。
我:呃。。。这敢情好阿。。。但怎么会找上我。。。我不懂 JSP 的阿!
12306:经过无数的会议及考量后,领导决定使用与铁道部其名相称的技术 Rails ,来开发我们的新微博,我们是透过码农协会找到你的。
我:呃。。。码农协会?
12306:一个协会位于类似美国的五十一区,是一个神秘的特区。
我:哦。。。怎么会选上我?
12306:我们发现了您平常做的梦都是编程相关的,相信你是合适人选,稍后就会有有关人士带您到五十一区进行编码
我:汗。。。这我试试行吗?我貌似做不来。。。

突然间咻的一声,天降几个几个山东大汉,把我带走了,醒来时我已经不知身在何处了,这里貌似就是五十一区了。。。
在这里每天每时每刻都只能编程,不然就会有一堆一堆美女冲出来用XX撞你,或是逼迫你使用 JAVA / C++ 编程,太可怕了,我还是好好干吧!

这是我在五十一区的第一天,我要把我的工作,都记录下来。。。

呃,这是一个极富挑战性的项目,虽然我没有 2 年的 PHP 开发经验,也没有在毕业设计里搞过 JSP,而我的化繁为简能力也仅止于繁体转简体,我还是想要尝试这个巨大的挑战,虽亿万 HTTP Request,吾往矣。。。
神秘的 X 项目
创建项目

(懒得听我废话直接看这小节我输入了什么命令看 => 这里)

这个神秘的 X 项目最终会有用户、微博、具完整的用户登入及验证功能,我们会从创建静态页面开始。尽管这听起来是这么简单,而创建静态页面却是应用的一个完美开始!虽然 Rails 设计来创建带数据库的动态网站,但它对于产生静态页面混点小量的动态内容也是很猛的。然而整个项目我们会使用一个好的测试套装来进行开发,并告诉你如何使用 spork+guard 来加速测试运行,而整个项目我们将会使用目前最红火的 RSpec 搭配一些别的 Gem 来进行测试。

如果你是 Ruby 新手呢,或是初学 Ruby 的朋友,不要太纠结于细节,这是如何工作的。。。你小时候看片也没看那么仔细吧,等你真的有点“实战”经验时,再回头细细品味不迟。还有,之后我会谈到一些你所需要的基础 Ruby 知识。

好,开始吧,首先我使用的是 RVM ,我先创建一个新的 gemset 供项目使用:

rvm gemset create rails-x

你可以叫它 rails-x, my-ex-girlfriend,你开心就好!

然后安装一下 Rails 最新版本 3.2.3:

gem install rails -v 3.2.3

安装完毕,创建新项目,由于我们要用的是 RSpec,所以加上 --skip-test-unit 参数,而我们还要装一些特别的 Gem,所以先略过 bundle 的步骤啦 --skip-bundle:

rails new x_weibo --skip-test-unit --skip-bundle

什么是 bundle 命令?难道你没有看我的 000-003 系列吗?没关系,因为 000-003 我也没说,bundle 实际上就是帮你把那些该装的 Gem 装一装,别担心,不会把你带去劳改农场的。

接下来让我们安装 RSpec 以及一些将会用到的 Gem,我们将安装 rspec-rails 2.9.0 ,capybara 1.1.2,而生产模式的数据库我们将使用 PostgreSQL 来部属到 Heroku。

Heroku?这是神马?恩,你知道每年 Ruby 都有 Hero 奖吧,这是一个慢到连 Ruby Hero 都会哭的云服务平台,让你的 Rails 应用轻松推入云端。。。这么慢为什么还用?因为它对于像我们这种距离学会 Rails 还有 9XX 小时的人非常有用,让你不要钱玩部属(友情提示:人生中,不要钱的往往最贵)。呵呵!先去注册一个号吧,Heroku 注册按我按我按我

首先你需要安装 PostgreSQL,请看这篇文章:安装 PostgreSQL windows, ubuntu, Mac。然而开发与生产模式我们将使用同样的数据库 PostgreSQL,让我们改动 Gemfile :

source 'https://rubygems.org'

gem 'rails', '3.2.3'
gem 'pg', '0.12.2'
gem 'bootstrap-sass', '2.0.0'

group :development, :test do
  gem 'rspec-rails', '2.9.0'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '3.2.4'
  gem 'coffee-rails', '3.2.2'
  gem 'uglifier', '1.2.3'
end

gem 'jquery-rails', '2.0.0'

group :test do
  gem 'capybara', '1.1.2'
end

rspec-rails 放在开发模式里,让我们可以存取 RSpec 的产生器、而同时在测试模式的群组里,让我们可以写测试。我们不需要像单独使用 RSpec 那样安装 RSpec Gem,因为已经含在 rspec-rails 的相依套件里了。测试模组里我们安装 capybara ,一个可以使用近似英语的语法模拟用户行为的套件。

还有我们需要设定 config/database.yml 其中 username 是你的用户名,比如我的用户名为 Mac,请看 Railscast 342 迁移至 PostgreSQL,拜托你先看这个视频,看看是如何设定的,视频约 8 分钟,才 8 分钟啊!不然你可能会遇到很多问题,当然你使用 SQLite3 也是可以的,只是前辈先烈都说,开发生产环境得用同样的数据库才是最佳实践,而我每天都穿不同内裤。

放心放心,配置不成功,尽管问吧,Ruby-china 的人都很愿意替你解答的,但记得提供足够多的信息,你不会这样问吧:

我试了一下 PostgreSQL,但是装不成功,有人知道怎么装吗?

这就像是说,

我跟谁谁谁交往了,但是失败了,有人知道怎么办吗?

你这样讲谁知道阿,细节阿细节,关键是细节,你得提供更多细节。。。

恩,回头看看 database.yml 怎么配置,你可以参考看看我的 database.yml :

development:
  adapter: postgresql
  encoding: unicode
  database: x_weibo_dev
  pool: 5
  username: Mac
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: x_weibo_test
  pool: 5
  username: Mac
  password:

production:
  adapter: postgresql
  encoding: unicode
  database: x_weibo
  pool: 5
  username: Mac
  password:

改好 Gemfile 及配置数据库以后,让我们来

bundle install --binstubs --without production

一下,这会帮我们把所有描述在 Gemfile 里的 Gem 装好。而 --binstubs 选项是为了之后可以更方便的存取一些执行档。--without production 让我们在开发时不用产生生产模式的 Gem。

注意,第一次的 bundle 是会记忆你所输入的选项的,之后只要使用简单的 bundle 命令即可。

对了,你刚刚提到 --binstubs 更方便,究竟是怎样?好吧,既然你诚心诚意的发问了,那我就盛情难却的告诉你,一般调用 rake 命令是这样子吧:

bundle exec rspec 然而打了 --binstubs 它替我们把 rake 放到一个 bin 的目录,让我们可以这样子调用:bin/rspec 甚至是 rspec ,少打了几个字,程序员就是懒。

好了,运行完:

bundle install --binstubs --without production

过后,你会看到:

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

耶!YEAH! 再来配置一下 Rails 让它使用 RSpec 来取代缺省的 Test::Unit:

rails generate rspec:install

OK,一切就是这么简单。Simple........

接下来让我们把项目文件放在 Github 做版本管理,首先你需要申请 一个 Github 帐户,并在计算机里安装 Git,请跟随此文步骤依序设置 Github,如果你对 Git 不熟悉,可以看看这篇Git 简易指南,你真的还不放心吗?好吧,那你可以去读读 Git 魔法或是 Pro Git 这两本免费的书,还都有中文版呢!

好了,有了 Git 与 Github 之后,让我们在改动一下 .gitignore ,这个文件可以把一些不必要的文件过滤掉,让它们不要上传至 Github。打开 .gitignore 添加:

*.rbc
*.sassc
.sass-cache
capybara-*.html
.rspec
/.bundle
/vendor/bundle
/log/*
/tmp/*
/db/*.sqlite3
/public/system/*
/coverage/
/spec/tmp/*
**.orig
rerun.txt
pickle-email-*.html
doc/
*.swp
*~
.project
.DS_Store
bundler_stubs/

或是其他例如 重要报告(妈妈勿开), 高考模拟试题(重要勿看) 等等你不想让别人看到的目录。

呵呵,很好,你已经通过了学会 Rails 最难的一关,配置开发环境!!!!!!!!

然而我建议你把目录下的 README.rdoc 改成 README.md

mv README.rdoc README.md

README.md 可以放像是:

# 妈,我开始学 Rails 了!
努力学习 Rails 当中!!!

接下来让我们把这些文件托管到 Github 及 Heroku。

git init
git add .
git commit -m 'Init Commit'

去 Github 创一个新的 repo 哦 -> 或是直接按这里

git remote add origin git@github.com:<username>/your-repo-name.git
git push -u origin master

接下了是新增一个 heroku 域名(如果你还没设置好 Heroku,这里有步骤)

heroku create --stack cedar
git push heroku master

之后如何推送、上传到 Github:

git push

之后如何推送、上传到 Heroku:

git push heroku

等等,说好的加速测试呢?Spork 跟 Guard 啊,可以参考这篇:Rails 3.2.3 使用 Spork + Guard + RSpec + Capybara

再附上一个如何配置 Windows/Linux/MacOS Sublime Text2 编辑器的文章,

这里有三部 Michael Hartl 教你如何配置环境的影片

等等,怎不用 VIM、Emacs 呢?恩,那些人自己就会用了,我是替初入门的你说的,亲。

光安装就讲了这么久,让我们实际开始创建静态页面吧!

Rails 火车要启动啦,

呜 -- 唉妈呀 -- 唉妈呀 -- 唉妈呀 --

这次的拟声词为何变成唉妈呀了呢?因为有一个山东大汉手指头被门夹住了。。。

上帝保佑他!

距离学会 Rails 还有 950 小时。。
分享到:
评论

相关推荐

    Prime Numbers - The Most Mysterious Figures in Math

    **标题与描述**:“Prime Numbers - The Most Mysterious Figures in Math”(素数——数学中最神秘的数字)揭示了素数这一概念在数学领域的独特地位。 **详细解释**:素数是指只能被1和自身整除的大于1的自然数。...

    mysterious_lochness018

    mysterious_lochness018

    waves-master_js_mysterious5cd_waves_波浪_

    "mysterious5cd"可能是一个项目代码或版本标识,其具体含义可能需要查看项目源码才能了解。"waves"和"波浪"都指向了这个项目的主题,即创建逼真的波浪动画。因此,我们可以预知这个项目的核心是通过编程来模拟海洋...

    The Phoenix Project

    The company's new IT initiative, code named Phoenix Project, is critical to the future of Parts Unlimited, but the project is massively over budget and very late. The CEO wants Bill to report directly...

    backupDAO_Net_visualbasic_mysterious1a9_

    "mysterious1a9"可能是一个特定版本或者项目的内部标识符,具体含义可能只有项目开发者才能解释。 【描述】"backupDAO_Net VB example fonts" 提供了更多细节,表明这是一个使用VB(Visual Basic)的.NET应用程序...

    mysterious_lights

    mysterious_lights

    mysterious_lochness

    mysterious_lochness

    ConsoleApplication1_mysterious51p_图像处理_

    "ConsoleApplication1_mysterious51p_图像处理_"这个项目显然涉及到一个使用C#(因为一般情况下,ConsoleApplication1暗示这是一个C#的控制台应用程序)编写的程序,用于将医学影像转换为特定格式或参数,如“bpm”...

    抽象精品ppt模板mysterious_lights162

    抽象精品ppt模板mysterious_lights162

    Models to Code With No Mysterious Gaps epub

    Models to Code With No Mysterious Gaps 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    mysterious-messenger:在Ren'Py中创建的Messenger游戏

    神秘的使者一个具有许多功能的...刷新您的项目列表,您应该会看到列出的mysterious-messenger将脚本生成器电子表格保存在以后可以找到的位置该项目中使用的图像和声音文件不包含在存储库中。如果您想请求个人使用

    h-lua-sdk-mysterious-land:【h-lua-sdk项目】演示:秘地探奇

    h-lua-sdk神秘土地 【h-lua-sdk项目】演示:秘地探奇(*半成品地图) 必须使用h-lua-sdk进行地图整合与测试 git clone https://github.com/hunzsig-warcraft3/h-lua-sdk.git 将本项目克隆到h-lua-sdk的项目里 cd ./h...

    Models to Code With No Mysterious Gaps 无水印原版pdf

    Models to Code With No Mysterious Gaps 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看...

    藏经阁-How to overcome mysterious problems caused by large and mult

    藏经阁-How to overcome mysterious problems caused by large and multi-tenant Hadoop cluster at Rakuten 在本文中,我们将探讨 Rakuten 公司中使用 Hadoop 集群时遇到的几个神秘问题,并了解解决这些问题的方法...

    Models to Code: With No Mysterious Gaps

    Leon Starr and Andrew Mangogna, "Models to Code: With No Mysterious Gaps" English | ISBN: 1484222164 | 2017 | 305 pages | PDF | 18 MB Learn how to translate an executable model of your application ...

    iForest.rar_iForest-_matlab iforest_mysterious4ep_时间序列_时间序列 检测

    在"mysterious4ep"项目中,可能涉及了复杂的时间序列问题。"时间序列检测"这一标签暗示我们需要关注的是时间序列中的不寻常模式,可能是短暂的异常波动,也可能是长期的趋势变化。iForest算法可以有效地检测这些异常...

    LDA_java.zip_java LDA_ldajava_mysterious2dn_停用词代码_去除停用词

    **ldajava**和**mysterious2dn**可能是项目作者为了区分不同版本或模块而使用的内部标识,具体含义可能需要查看源代码才能明确。在实际应用中,这些命名可能代表了特定的优化或者功能扩展。 总之,这个"**LDA_java....

    SLIC_superpixelSLIC_mysterious7j9_超像素生成_SLIC_超像素kmeans_

    在SLIC算法中,每个像素点被表示为5维向量:(x, y, L, a, b),其中(x, y)是空间坐标,L、a、b是L*a*b*色彩空间的三个分量。然后,通过迭代的方式,将像素点分配到最近的超像素中心,同时考虑到空间邻近性和色彩相似...

    mysterious-warriors:整个游戏创造了

    《神秘战士:游戏世界的构建》 在编程领域,JavaScript 是一种不可或缺的语言,尤其在Web开发中,它扮演着至关重要的角色。"mysterious-warriors"项目似乎是一个利用JavaScript创建的完整游戏,它揭示了如何利用这...

Global site tag (gtag.js) - Google Analytics