查找Rails插件

1.用[The Ruby Toolbox]查找

2.用[GitHub]查找

3.用[RailsCasts]查找

4.用[RubyGems.org]查找

5.用搜索引擎查找

6.通过交流查找

Advertisements

往数据库中添加数据的方法

使用的文件

db/seeds.rb

%w(ruby rails work life misc).each do |cat|

  Category.find_or_create_by_name(cat)

end

或者

0.upto(9) do |idx|

  Article.create(

  {

    title: “文章#{idx}” + (idx % 3 == 0 ? “☆” : “”),

    body: “内容n各种各样#{idx}”,

    member_only: (idx % 3 == 0)

  }, without_protection: true)

end

rake db:seed

或者用

/test/fixtures/categories.yml

的方式

参考文章

http://railscasts.com/episodes/179-seed-data?language=zh&view=asciicast

用paypal_adaptive实现PayPal支付

安装Gem[RubyGems.org]

http://rubygems.org/gems/paypal_adaptive

PayPal测试环境

https://www.sandbox.paypal.com/cgi-bin/webscr

PayPal真实环境

https://www.paypal.com/cgi-bin/webscr

怎么获取 PayPal API 的 username, password 和 signature 信息?

http://www.putler.com/support/faq/how-to-get-paypal-api-username-password-and-signature-information/

用信用卡支付[Active Merchant]

http://activemerchant.org/

[The Ruby Toolbox]的PayPal相关Gems

https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=paypal

[paypal_adaptive]的相关信息与文档

https://www.ruby-toolbox.com/projects/paypal_adaptive

http://rubydoc.info/gems/paypal_adaptive/frames

获取PayPal的application_id

https://www.x.com/developers/paypal/documentation-tools/apps-101

If you’re testing Adaptive API calls, use the static Sandbox AppID:

APP-80W284485P519543T

※怎么获取PayPal的live production环境的application ID?

https://www.x.com/developers/paypal/documentation-tools/going-live-with-your-application

用真实的PayPal账号登录 https://www.x.com ,点击“My Account”(top) => “New App”(left)

在表单中填写的电子邮件一定要对应到 PayPal ,填写的信息越详细越有助于通过审核。

PayPal开发协议

https://www.x.com/developers/paypal/paypal-developer-agreement

WEB暴风雨的[PayPal Adaptive with Rails 3]

http://webtempest.com/paypal-adaptive-with-rails-3/

配置Capistrano

1.前提条件

a.应用程序在用Git等版本管理工具管理。

b.可以用SSH登录发布端服务器。

c.登录发布端服务器的用户有安装目录的读写权限。

2.安装Capistrano

可以用gem安装Capistrano。在Gemfile中追加的话这样写:

group :development do

  gem ‘capistrano’, :require => nil

  gem ‘capistrano-ext’, :require => nil

end

这样在开发环境就可以使用了。

3.生成Capistrano的配置文件

$ cd path/to/application

$ capify .

[add] writing ’./Capfile’

[add] writing ’./config/deploy.rb’

[done] capified!

4.配置发布

各种配置都是在 config/deploy.rb 里,形式为:

[set 设定名, 设定值]

a.基本设置

必须设置的项目为

:repository – 设置配置管理工具管理的应用程序。

:application – 设置应用程序名。

设置应用程序的发布端

:deploy_to – 指定应用程序发布端的路径。默认是 /u/apps/应用程序名。

:runner – 指定在服务器上 sudo 执行各种操作的用户。默认是“app”这个用户名。

:use_sudo – 指定各种操作有没有 sudo 。不执行 sudo 时设置为false。

设置使用的配置管理工具或者其使用方法

:scm – 指定配置管理工具。默认是subversion。

:deploy_via – 指定发布方法(checkout、copy、remote_cache、export等)。默认是 checkout。

:revision – 指定发布的仓库。默认是最新的仓库。

b.设置登录端的环境变量

default_environment[“PATH”] = “${HOME}/opt/ruby193/bin:${PATH}” # 这是例

c.设置配置管理工具的认证信息

:scm_username – 访问配置管理工具的用户名。

:scm_password – 访问配置管理工具的密码。

d.定义各种服务器的角色

形式为:

[role 服务器类别, 主机名]

:web – 定义Web服务器。在主机名处,可以指定复数的主机名或IP地址。

:app – 定义应用程序服务器。在主机名处,可以指定复数的主机名或IP地址。

:db – 定义DB服务器。主机名虽然可以指定复数,主DB服务器必须只能指定1个,添加 :primary => true 参数。

指定 role 的时候指定 :user 参数的话,可以指定登录到那个服务器的用户。

例如构成下边服务器的时候,

■Web服务器:www01.example.local(1台)

■应用程序服务器:app01.example.local、app02.example.local(2台)

■DB服务器(primary):masterdb.example.local(1台)

■DB服务器(slave):db01.example.local、db02.example.local(2台)

config/deploy.rb 写法如下:

set :application, “blog20”

set :repository, “http://repos.example.com/blog_2.0/trunk”

set :deploy_to, “/var/www/apps/blog_2.0/productions”

role :web, “web01.example.local”

role :app, “app01.example.local”, “app02.example.local”

role :db, “masterdb.example.local”, :primary => true

role :db, “db01.example.local”, “db02.example.local”

5.用Capistrano发布

a.生成发布端目录树

$ cap deploy:setup

(如果提示:sudo: no tty present and no askpass program specified,加入:default_run_options[:pty] = true)

目录为:

/var/webapp

/var/webapp/blog20

/var/webapp/blog20/releases

/var/webapp/blog20/shared

/var/webapp/blog20/shared/log

/var/webapp/blog20/shared/pids

/var/webapp/blog20/shared/system

b.执行发布

$ cap deploy

以root权限重启线程。

c.生成产品环境用的DB

$ cap deploy:migrate

d.启动线程

$ cap deploy:start

$ cap deploy:restart – 重启

$ cap deploy:stop – 停止

e.执行回滚

$ cap deploy:rollback

f.调查其他任务的方法

$ cap -T

输出所有任务

$ cap -vT

想知道任务的详细的时候,加“–explain”参数

$ cap –explain deploy:update

※Capistrano不能运行的时候

不能登录其他服务器的时候,添加如下设置:

…(省)

ssh_options[:verbose] = :debug

…(省)

这样的话,显示了SSH详细的日志,有助于问题的解决。

Apache + Passenger WEB服务器配置(OS:Ubuntu 11.10)

1.安装Apache

% sudo apt-get install apache2 openssh-server apache2-prefork-dev libapr1-dev libaprutil1-dev

(这里附带其他软件,周边软件参照:http://www.oiax.jp/rails3book/prepare_ubuntu_10_04.html)

2.安装Passenger

$ gem install passenger

$ sudo passenger-install-apache2-module

(这里如果提示:sudo: passenger-install-apache2-module: command not found,就用rvmsudo,前提是用RVM安装了Ruby)

3.配置Apache

vi /etc/apache2/httpd/conf

(顺便提一下,这是Apache的用户配置文件,/etc/apache2/apache2.conf是主配置文件)

…(略)

# Passenger安装完成时给出的3行粘贴到这

LoadModule passenger_module /home/user/.rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.12/ext/apache2/mod_passenger.so

PassengerRoot /home/user/.rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.12

PassengerRuby /home/user/.rvm/wrappers/ruby-1.9.3-p125/ruby

<VirtualHost *:80>

  ServerName www.example.com

  DocumentRoot /path/to/your/rails_app/public

</VirtualHost>

※产品环境设置

a.数据库

rake db:create RAILS_ENV=production

rake db:migrate RAILS_ENV=production

rake db:fixtures:load RAILS_ENV=production

b.编译Assets

rake assets:precompile

重启Apache,访问ServerName处指定的地址看看效果吧。

如果出现了项目public目录下的列表一览,就执行:

$ sudo a2dismod passenger (关掉已加载的Passenger Module)

$ service apache2 restart

再刷新。

4.Passenger各种配置

(全在httpd.conf内用Apache指令设置)

・RailsMaxPoolSize:指定Rails应用的线程数。默认是20。

・RailsEnv:指定RAILS_ENV环境变量。默认是production。

・RailsAutoDetect:判断文档是否是Rails应用,自动启动Passenger。默认是on。不判断时是off。

・RailsBaseURI:指定Rails应用程序的基本目录。

・RailsRuby:指定用于Passenger的Ruby命令的完整路径。默认是从环境变量PATH里查找Ruby命令。

5.把应用程序配置在子目录里

(这样做是可以同时搭建多个应用程序。如果你只弄一个,那直接用第3步就行。为了扩展性好,请往下看。)

进入DocumentRoot目录(各个系统目录不同,参照:http://wiki.apache.org/httpd/DistrosDefaultLayout),配置3个应用。

$ cd /var/www

$ sudo -u apache ln -s /var/webapp/myblog/public ./myblog

$ sudo -u apache ln -s /var/webapp/tiny_todo/public ./tiny_todo

$ sudo -u apache ln -s /var/webapp/votes/public ./votes

然后在httpd.conf里添加RailsBaseURI选项:

vi /etc/apahce2/httpd.conf

# passenger_module的加载或者PassengerRoot、PassengerRuby的设置

…(略)

<VirtualHost *:80>

  ServerName www.example.com

  DocumentRoot /var/www

  RailsBaseURI /myblog

  RailsBaseURI /tiny_todo

  RailsBaseURI /votes

</VirtualHost>

到这里,重启Apache,

http://www.example.com/myblog

http://www.example.com/tiny_todo

http://www.example.com/votes

等应用可以访问了。

编译Assets文件

●Rails版本:3.1.3

如果项目初期没有在Gemfile中加入

group :assets do

  gem ‘sass-rails’,   ’~> 3.1.5’

  gem ‘coffee-rails’, ’~> 3.1.1’

  gem ‘uglifier’, ’>= 1.0.3’

end

那么自动创建的css和js是默认.css和.js格式。这样在执行 rake assets:precompile 后运行程序时会提示:

index.css等没有预编译。

解决方案是在/config/environments/production.rb中去掉config.assets.precompile前的注释,并加入想编译的文件,如:

config.assets.precompile += %w( index.css index.js )

再执行rake assets:precompile,重启WEB服务器。