因爲國內網絡緣由(你懂的),致使 rubygems.org 存放在 Amazon S3 上面的資源文件間歇性鏈接失敗。因此你會與遇到 gem install rack
或 bundle install
的時候半天沒有響應,具體能夠用 gem install rails -V
來查看執行過程。
rvm是一個命令行工具,能夠提供一個便捷的多版本ruby環境的管理和切換。php
若是你打算學習ruby/rails, rvm是必不可少的工具之一。html
這裏全部的命令都是再用戶權限下操做的,任何命令最好都不要用sudo.html5
$ curl -L get.rvm.io | bash -s stable
$ source ~/.bashrc
$ source ~/.bash_profile
$ sed -i -e 's/ftp\.ruby-lang\.org\/pub\/ruby/ruby\.taobao\.org\/mirrors\/ruby/g' ~/.rvm/config/db
rvm list known
rvm install 1.9.3
這裏安裝了最新的1.9.3, rvm list known
列表裏面的均可以拿來安裝。jquery
rvm use 1.9.3
若是想設置爲默認版本,能夠這樣linux
rvm use 1.9.3 --default
rvm list
rvm remove 1.9.2
rvm不只能夠提供一個多ruby版本共存的環境,還能夠根據項目管理不一樣的gemset.nginx
gemset能夠理解爲是一個獨立的虛擬gem環境,每個gemset都是相互獨立的。git
好比你有兩個項目,一個是rails 2.3 一個是 rails 3. gemset能夠幫你便捷的創建兩套gem開發環境,而且方便的切換。github
gemset是附加在ruby語言版本下面的,例如你用了1.9.2, 創建了一個叫rails3的gemset,當切換到1.8.7的時候,rails3這個gemset並不存在。ubuntu
rvm use 1.8.7
rvm gemset create rails23
use 能夠用來切換語言,或者gemset,前提是他們已經被安裝(或者創建)。並能夠在list命令中看到。
rvm use 1.8.7
rvm use 1.8.7@rails23
而後全部安裝的gem都是安裝在這個gemset之下。
rvm gemset list
若是你想清空一個gemset的全部gem,想從新安裝全部gem,能夠這樣
rvm gemset empty 1.8.7@rails23
rvm gemset delete rails2-3
rvm還能夠自動加載gemset.
例如咱們有一個rails3.1.3項目,須要1.9.3版本ruby.整個流程能夠這樣。
rvm install 1.9.3
rvm use 1.9.3
rvm gemset create rails313
rvm use 1.9.3@rails313
下面進入到項目目錄,創建一個.rvmrc文件。
在這個文件裏能夠很簡單的加一個命令:
rvm use 1.9.3@rails313
而後不管你當前ruby設置是什麼,cd到這個項目的時候,rvm會幫你加載 ruby 1.9.3和rails313 gemset.
*首先安裝passenger
gem install passenger
而後使用passenger-install-nginx-module 來安裝nginx和部署。
由於這一步須要root權限(由於要編譯nginx)能夠用rvmsudo這個東西。(這個東西真是個好東西)
rvmsudo passenger-install-nginx-module
而後會讓你選擇是下載nginx源碼自動編譯安裝,仍是本身選擇nginx源碼位置。
選擇nginx手動安裝的能夠添加別的編譯參數,方便自定義編譯nginx。
而後一路下載安裝。默認的安裝位置爲/opt/nginx.
而後看看nginx.conf,都給你配置好了,只須要加上root位置(yourapp/public)就能夠了。
當我第一次安裝完成了,就驚呼,這也太爽了吧。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
因爲國內網絡緣由(你懂的),致使 rubygems.org 存放在 Amazon S3 上面的資源文件間歇性鏈接失敗。因此你會與遇到 gem install rack
或 bundle install
的時候半天沒有響應,具體能夠用 gem install rails -V
來查看執行過程。
$ gem sources --remove https://rubygems.org/
$ gem sources -a http://ruby.taobao.org/ $ gem sources -l *** CURRENT SOURCES *** http://ruby.taobao.org # 請確保只有 ruby.taobao.org $ gem install rails
source 'http://ruby.taobao.org/' gem 'rails', '3.2.12' ...
$ sed -i .bak 's!ftp.ruby-lang.org/pub/ruby!ruby.taobao.org/mirrors/ruby!' $rvm_path/config/db
$ sed -i 's!ftp.ruby-lang.org/pub/ruby!ruby.taobao.org/mirrors/ruby!' $rvm_path/config/db
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
https://github.com/saberma/vimfiles
這是經典的vim on rails開發工具
請確保您已經安裝了git-core,vim-7.2,ruby,rvm
sudo apt-get install exuberant-ctags ncurses-term vim-nox git clone git://github.com/saberma/vimfiles.git ~/.vim #初始化插件 cd ~/.vim git submodule init git submodule update ln -s ~/.vim/vimrc ~/.vimrc cd ~/.vim/bundle/Command-T/ruby/command-t #必定要先切換回ruby1.8.7,不然vim會報錯:Vim: Caught deadly signal SEGV rvm system ruby extconf.rb make rvm default
最新版本的rails vimfiles已經再也不使用fuzzy_finder實現快速打開文件的功能,而改用CommandT
其快捷鍵也由原來的ctrl + t 改成 leader + t,leader鍵即\鍵
外部新增文件後,CommandT列表中看不到時,須要手動輸入:CommandTFlush,刷新緩存
2011.08.19已升級至最新版本,手動升級方法以下:
cd ~/.vim git remote add akitaonrails git://github.com/akitaonrails/vimfiles.git git pull akitaonrails master git submodule foreach git pull
如下爲akitaonrails原版詳細說明:
It is recommended that you use gVim in either Windows or Linux and MacVim for
Mac. Download from:
Troubleshoot: Because of the large amount of submodules, if you ever have any
trouble after pulling from the repository, it will be easier to just back up
your old .vim folder and just git clone a new version.
Clone this repo into your home directory either as .vim (linux/mac) or
vimfiles (Windows). Such as:
git clone git://github.com/akitaonrails/vimfiles.git ~/.vim
Then ‘cd’ into the repo and run this to get the snippets submodule:
git submodule update --init
Now you should create a new .vimrc file in your home directory that
loads the pre-configured one that comes bundled in this package. You can do it
on Linux/Mac like this:
echo "source ~/.vim/vimrc" > ~/.vimrc
On Windows you should create a _vimrc (underline instead of dot) and add
the following line inside:
source ~/vimfiles/vimrc
This way you can override the default configuration by adding your own inside
this file.
You should also create a new .gvimrc file in your home directory. You can do
it on Linux/Mac like this:
echo "source ~/.vim/gvimrc" > ~/.gvimrc
On Windows you should create a _gvimrc (underline instead of dot) and add
the following line inside:
source ~/vimfiles/gvimrc
This way you can override the default GUI configuration by adding your own inside
this file.
At first usage of vim, type 「:」 while in command mode and execute:
call pathogen#helptags()
This will make the plugins documentations available upon :help
You will need these dependencies figured out:
In Ubuntu, for example, you will have to do:
apt-get install exuberant-ctags ncurses-term
In OS X, you can install ctags with homebrew
brew install ctags
On Windows you have to download Ctags and add ctags.exe in your PATH.
Mac OS X and most Linux distros come with Ruby already. If you’re in Windows
look for Luis Lavena’s latest Ruby Installer (http://rubyforge.org/projects/rubyinstaller/)
The latest version replaces the old Fuzzy Finder with a new one called
「Command-T」 form wincent.com. I’ve replaced the old 「Command-T」 key
binding that used to open new tabs and assigned it to this new plugin
so it behaves the same as Textmate.
You may have problems in Mac/Linux because this plugin requires a native
extension, so you will have to do this:
rvm use system # use this line if using rvm cd ~/.vim/bundle/Command-T/ruby/command-t ruby extconf.rb make
This means that you need to have your Ruby source files and GCC also
installed. A binary for Windows is already bundled so it should just
work. I’ve also included a binary compiled for Ruby Enterprise Edition,
but if you are using other Ruby distros, you will need to recompile.
There are binaries for Mac and Windows. The Mac version is compiled
against the default system Ruby for Mac OS X 10.6.5. The Windows version
is compiled against Ruby Installer 1.8.7-p330.
Ubuntu 11.04 comes bundled with Vim 7.3.35, which has 「flaky」 Ruby support.
Even if you do everything right, you might see the following crashes when
trying to use Command-T:
Vim: Caught deadly signal SEGV Vim: Finished. Segmentation fault
If this happens to you, update Vim to 7.3.154:
hg clone https://vim.googlecode.com/hg/ ~/vim cd ~/vim hg update -C v7-3-154 ./configure --enable-rubyinterp make sudo make install
More details can be found here
Visit the following sites to learn more about Vim:
There are many sites teaching Vim, if you know of any other that are easy
to follow for newcomers, let me know.
Originally posted 2012-12-21.
I've been working with a lot of virtual machines lately, and using RVM to install the version of ruby I need took longer than installing the base system. If you go through the motions of rvm install {VERSION}
, you might just gloss over this message:
No binary rubies available for: ubuntu/12.04/x86_64/{VERSION}.
Continuing with compilation. Please read 'rvm mount' to get more information on binary rubies.
Not reading the documentation for rvm mount
might end up costing you a lot of time.
RVM has a list of premade binaries that it will download if it gets the chance - you can see the list in/usr/local/rvm/config/remote
or on github (I used a system-wide RVM install for this. Your path may be ~/.rvm/config/remote). For binaries that don't exist in that list, there's the option of packaging your own.
I'll be assuming that we're building a 2.0.0-preview2 binary, using a server you can scp files to, which is also accessable at http://artifacts.corp/binaries/
rvm install 2.0.0-preview2 rvm prepare 2.0.0-preview2 --install -r artifacts.corp:/var/www/binaries/
The rvm prepare
command should have made a file called ruby-2.0.0-preview2.tar.bz2
in your current directory, and output something like the following.
--- upload: ssh "artifacts.corp" "mkdir -p /var/www/binaries//ubuntu/12.04/x86_64/" scp "ruby-2.0.0-preview2.tar.bz2" "artifacts.corp:/var/www/binaries//ubuntu/12.04/x86_64/ruby-2.0.0-preview2.tar.bz2"
RVM rightly cares quite a bit about the OS that the build will be installed on, and strongly recommends that you follow the naming convention seen in that output as a way to organize and name your builds. Once those commands are run and the file is uploaded, we'll be ready for the next time that we need to install 2.0.0-preview2 on this OS.
There are two ways to download premade binaries - rvm install {name}
, which uses the list of prebuilt binaries if possible, or rvm mount -r {URI}
. The former works with data from configuration files, while the latter works using just command line parameters. Let's install our Ruby using mount first, since it takes fewer steps:
rvm mount -r http://artifacts.corp/binaries//ubuntu/12.04/x86_64/ruby-2.0.0-preview2.tar.bz2 --verify-downloads 1
On the VM I tested this with, rvm mount
takes 12 seconds, while rvm install
takes 4 minutes. Of course, there's that verify-downloads
flag and the lists of prebuilt binaries left to explain..
As mentioned above, RVM has a list of prebuilt binaries for different platforms that it can download. In addition to the file (on ubuntu) at /usr/local/rvm/config/remote
, RVM will also use/usr/local/rvm/users/remote
, if present. You can see the rubies that RVM can download as binaries for your system with rvm list remote
# Rubies available for 'ubuntu/12.04/x86_64': rbx-2.0.0-rc1 ruby-1.9.3-p194 ruby-1.9.3-p286 ruby-1.9.3-p327
If we add the URL to our precompiled 2.0.0-preview2 binary to /usr/local/rvm/users/remote
, it will show up in that list.
root$ echo "http://artifacts.corp/binaries//ubuntu/12.04/x86_64/ruby-2.0.0-preview2.tar.bz2" >> /usr/local/rvm/user/remote root$ rvm list remote # Rubies available for 'ubuntu/12.04/x86_64': rbx-2.0.0-rc1 ruby-1.9.3-p194 ruby-1.9.3-p286 ruby-1.9.3-p327 ruby-2.0.0-preview2
For this bit, there is every chance that I am missing, or misunderstanding, something. This may not be the best or right way to do things
Even though it shows up in the remote list, we still have to tell RVM that our server is an acceptable place to download rubies from. We do this by adding it to another textfile.
echo "rvm_remote_server_url=http://artifacts.corp/" >> /usr/local/rvm/user/db
At this point, if you try rvm install 2.0.0-preview2
you would get an error message about checksums not matchng. With RVM's mount we used the --verify-downloads
flag, which saves checksums of the file we download after the fact. Using that same flag, rvm install 2.0.0-preview2 --verify-downloads 1
, will download and install the package correctly.
If however, you want to have RVM to use checksums to verify the download was successful, we can refer way back to the rest of the output from our rvm prepare
command:
--- rvm/config/md5: http://artifacts.corp/binaries/ruby-2.0.0-preview2.tar.bz2=fdb22cbad861616f5e3b56f0e3d976be --- rvm/config/sha512: http://artifacts.corp/binaries/ruby-2.0.0-preview2.tar.bz2=eb1972575cee09b0de59f39815b2f9992366cd6aaf3e32ab214d39b054029cf904260933e8b2fa101c7b5eb548d013e0e05c09d3e93dbc97a1ae55789d6a046b
And add those lines to our user/*
files
echo "http://artifacts.corp/binaries/ubuntu/12.04/x86_64/ruby-2.0.0-preview2.tar.bz2=eb1972575cee09b0de59f39815b2f9992366cd6aaf3e32ab214d39b054029cf904260933e8b2fa101c7b5eb548d013e0e05c09d3e93dbc97a1ae55789d6a046b" >> /usr/local/rvm/user/sha512 echo "http://artifacts.corp/binaries/ubuntu/12.04/x86_64/ruby-2.0.0-preview2.tar.bz2=fdb22cbad861616f5e3b56f0e3d976be" >> /usr/local/rvm/user/md5
Now, rvm install 2.0.0-preview2
will download a prebuilt binary from a server of your choosing, as well as verify that the checksum is the same as the package you built at the very beginning.
Phew.