一、新建rails项目步骤:
1.生成新项目
rails new demo

cd demo
vi Gemfile
末尾end前增加
  gem 'execjs'
  gem 'therubyracer'
 
2.测试服务是否可用
rails s -b 0.0.0.0
 
3.配置root页面(可忽略)
root to: redirect('/ccconsole/chart')
 
4.配置数据库(可忽略)
vi config/database.yml
(1)sqlite3(默认)
development:     
   adapter: sqlite3     
   database: db/development.sqlite3     
   pool: 5     
   timeout: 5000  
   
(2)postgresql
development:
  adapter: postgresql
  host: 9.186.88.100
  database: ccdb
  port: 5432
  username: postgres
  password: xx
  encoding: utf8
 
二、rails生成空数据库
(1)创建数据库(只需执行一次,可忽略)
rake db:create
 
(2)创建执行的migrate 表文件
rails g scaffold book name:string
注意:
1.都是小写。
2.如果你数据库创建了book这张表,他会报错。 
3.scffold生成表,表名会变成复数。
4.会自动生成id、created_at、updated_at字段。
5.常用有的类型 integer string float boolean decimal text
ruby是弱类型语言,对变量的定义不是很严格。
 
(3)制动 在数据库创建表
rake db:migrate RAILS_ENV=development
 
其他:
/config/routes.rb这个文件可配置路由。 
 
3.
生成model、controller、view
rails g scaffold book name price:integer
rake db:migrate RAILS_ENV=development
 
用migrate方式修改数据:
新建20170320141610_update_techspec_mapping.rb
class UpdateTechspecMapping < ActiveRecord::Migration
  def change
    TechspecMapping.where(字段: '修改前的值').update_all(字段: '修改后的值')
  end
end
 
执行:    rake db:migrate VERSION=20120613163818
回退:    rake db:migrate:down VERSION=20120613163730
回退rails g scaffold 命令       rails destroy scaffold 表名
看rails路径命令  rake routes
 
rails命令:
(1)生成model相关文件
rails g scaffold compliancerun starttime:timestamp node server_num:integer
(2)修改model
rails g migration add_column_to_updatedresources cookbook:string
 
rake db:seed 报错
bundle exec rake db:migrate
bundle update
 
三、配置404,500等页面
vi config/routes.rb
  get '500', :to => 'custom_errors#server_error'
  get '502', :to => 'custom_errors#server_error'
  get '504', :to => 'custom_errors#server_error'
  get '422', :to => 'custom_errors#server_error'
  get '404', :to => 'custom_errors#rescue404'

四、rails项目目录结构(程序自动生成)

1.app文件夹(rails的核心部分,也可以说存放的是针对项目的所有代码)
包括6个子文件夹 
  assets       图片、js和样式表 
  controllers  驱动业务逻辑的控制器
  helpers      视图辅助类,一些常用的代码段
  mailers      与邮件服务相关的类
  models       数据描述结构、验证和完整性规则等模块
  views        生成html的所有模块文件,也可以存放css、图片
 
2.public 存储rails应用的公共资源,如出错时的默认页和首页等。
3.script 各种脚本,如代码生成器脚本。
4.test 单元测试和功能测试
5.vendor 程序依赖的外部类库,和lib一样都可以被自动加载。
6.config 服务器、数据库或其他文件相依赖的配置文件
  database.yml 数据库配置
  ----adapter数据库连接库(适配器),默认sqlite3
  ----database数据库名称
  ----pool连接池数量
  ----timeout经过多少毫秒后服务器自动放弃连接,默认为5000ms。
7.db 数据库脚本
8.doc 文档
9.lib 类库
10.log 操作日志
11.其他文件
.gitignore 记录哪些是需要忽略,不需要追踪的文件
config.ru 基于rack服务器的配置来启动应用程序
Gemfile 允许我们指定哪些gem是rails应用程序所依赖的
Rakefile 包含了一些可以在命令行下运行的作业
README 包含了应用程序的简要说明

五、增加自定义页面方法

(1)config/routes.rb
get "detailreports" => "complianceruns#report"
(2)controller中
def report
  xx 
  render :report 
end
(3)  
views/complianceruns/中新建report.html.erb

六、rails task

rake命令
在项目lib/task中新建test.rb

namespace :test do
  task :hello do
    puts 'hello'
  end
end
 
运行:
rake test:hello

七、rails发邮件

1) update the /etc/postfix/main.cf by adding the following settings in the end:
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:用户:密码
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/postfix/ssl/gd_bundle-g2-g1.crt
header_size_limit = 4096000
relayhost = [smtp.sendgrid.net]:587
 
   assuming to use sendgrid, and I had a trial account as specified in smtp_sasl_password_maps
 
2) download the CA file specifed in 1)
      cd /etc/postfix/ssl
 
3) restart the postfix
      /etc/init.d/postfix restart
 
4) it may need to install a missing moduel
     yum install cyrus-sasl-plain
 
1.Gemfile中增加 
gem 'rake', '11.3.0'
 
2.项目根目录运行
rails g mailer UserMailer
 
3.vi app/mailers/user_mailer
增加
  default from: "xx@163.com"
  def send_mail(params = {})
    @url  = 'http://example.com/login'
    mail( :subject => 'abc',
          :to => "xx@qq.com",
          :from => 'xx@163.com',
          :date => Time.now
        )   
  end
 
4.vi config/environments/development.rb
增加
ActionMailer::Base.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"
  config.action_mailer.default_url_options = { :host => 'localhost:3000' }  
  ActionMailer::Base.smtp_settings = { 
:address => "smtp.163.com", 
:port => 25, 
:domain => "163.com", 
:authentication => :login, 
:user_name => "xx@163.com", 
:password => "xx"
  }

八、项目中增加bootstrap

(1)、在Gemfile中增加 gem 'bootstrap-sass', '~> 3.2.0.2'
(2)、bundle install
(3)、把assets/stylesheets/application.css重命名为application.css.scss
(4)、在这个文件中增加:
@import "bootstrap-sprockets";
@import "bootstrap";
(5)、在assets/javascriptsheets/application.js中增加://= require bootstrap-sprockets
 
九、分页
will_paginate
 .paginate(:per_page => pageSize, :page => pageNumber)
 
十、导出csv
def export_to_csv
    logger.debug "whyrun report export start: #{DateTime.now}"
    startDateUnixTime = params[:startDateUnixTime]
    endDateUnixTime = params[:endDateUnixTime]
    searchString = params[:searchString]
    searchColumns = params[:searchColumns]
 
    if validate_date_in_millisecs(startDateUnixTime) || validate_date_in_millisecs(endDateUnixTime) || validate_string(searchString,'searchString') || validate_string(searchColumns,'searchColumns')
      return
    end
 
    options = {
        :startDateUnixTime => startDateUnixTime,
        :endDateUnixTime => endDateUnixTime,
        :searchString => searchString,
        :searchColumns => searchColumns,
    }
    whyrun_reports = WhyrunReport.search(options)
    logger.debug "write file start: #{DateTime.now}"
 
    time = Time.now.strftime('%Y%m%d%H%M%S')
    zipstream = Zip::OutputStream.write_buffer do |zos|
      zos.put_next_entry "Compliance_Check_Report_#{time}.csv"
      zos.print "Server, Platform, Start Time, Tech spec, Policy, Validation, Policy Attribute, Required Value, Current Value, Compliant, Action to Remediate, Environment, Profile, Description \n"
      for i in 0..whyrun_reports.length-1
        server = whyrun_reports[i]['server'] || ''
        platform = whyrun_reports[i]['platform'] || ''
        startTime = whyrun_reports[i].starttime.strftime('%Y-%m-%dT%H:%M:%S.%3NZ') || ''
        techspec = whyrun_reports[i]['techspec'] || ''
        environment = whyrun_reports[i]['environment'] || ''
        profile = whyrun_reports[i]['profile'] || ''
        description = whyrun_reports[i]['description'] || ''
 
        data = [server, platform, startTime, techspec, policy, validation, policy_attribute, requiredValue, currentValue, compliant, action_to_remediate, environment, profile, description]
        zos.print data.to_csv
      end
    end
    zipstream.rewind
 
    send_data zipstream.string, filename: "Compliance_Check_Report_#{time}.zip", disposition: 'attachment'
    logger.debug "export end: #{DateTime.now}"
  end
 
 
Ruby on Rails 指南 (v5.1.1)

ruby on rails笔记的更多相关文章

  1. [Ting's笔记Day4]将Ruby on Rails项目部署到Heroku

    今天想笔记的是把自己写的Ruby on Rails项目部署(Deploy)到Heroku! Heroku是Salesforce公司旗下的云端服务商,支持多种程序语言像是Ruby,PHP,Python等 ...

  2. [Ting's笔记Day1] Ruby on Rails练习- MacOS安装篇

    千里之行,始于足下.喊了要学Ruby on Rails好久,今天终于要来迈向第一步:安装了! 一开始学习新的事物,主要就是跟着这个网页所说的步骤step by step. 很喜欢这个网页的设计流程,透 ...

  3. Ruby on Rails Tutorial读书笔记-1

    只是怕忘了命令,全部撸一次,记个大概.. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 安装Ruby之前,先要安装RVM: curl -L https://get.rvm.io | bas ...

  4. Ruby on Rails 开发笔记

    安装 Ruby on Rails Install Rails: A step-by-step guide 创建应用 # 创建新的应用程序 $ rails new blog $ cd blog # 启动 ...

  5. Ruby on Rails Tutorial 第2版 学习笔记

    Ruby on Rails Tutorial 第2版 在线阅读:http://railstutorial-china.org/ 英文版:http://ruby.railstutorial.org/ru ...

  6. 《Ruby on Rails教程》学习笔记

    本文是我在阅读 Ruby on Rails 教程的简体中文版时所做的摘录,以及学习时寻找的补充知识.补充知识主要来自于 Ruby on Rails 實戰聖經. Asset Pipeline 在最新版 ...

  7. Linux超快速安装Ruby on Rails

    Linux超快速安装Ruby on Rails 时间 2014-11-25 11:45:11 Flincllck Talk 原文  http://www.flincllck.com/quick-ins ...

  8. 管理不同版本ruby和rails的利器——rvm

    近年来,ruby on rails逐渐火了起来,我想各位码农早就耳闻,特别是那些做B/S项目的童鞋,早就想跃跃一试了. 笔者也是初次接触ruby on rails ,我想,对于初学者来说,最好的学习方 ...

  9. ruby on rails on windows

    这次想系统学会rails,最终目标是将redmine改造成顺手的工具,主要的手段就是开发redmine插件.虽然网上都推荐使用类Unix系统,可手头只有win7系统,就安装了. 难免会遇到这样那样的问 ...

随机推荐

  1. java笔试常见的选择题

    1.已知表达式int m[] = {0,1,2,3,4,5,6}; 下面那个表达式的值与数组的长度相等()A m.length()B. m.lengthC. m.length()+1D. m.leng ...

  2. Goaccess的简单使用

    goaccess了,它是一个日志分析工具,并不只是为nginx使用的,你也可以用它来分析apache,具有解析速度快,使用简单,能生成json,html,csv等特点. 1.goaccess的基本安装 ...

  3. Vue学习笔记【20】——Vue中的动画(使用动画钩子函数)

    定义及使用钩子函数 定义 transition 组件以及三个钩子函数:  <div id="app">    <input type="button&q ...

  4. Ruby——输入&输出

    Ruby的输入和输出操作.输入是程序从键盘.文件或者其他程序读取数据.输出是程序产生数据.可以输出到屏幕.文件或者其他程序. Ruby中的一些类有些方法会执行输入&输出操作.例如Kernel. ...

  5. java-items

    类名Items package entity; //商品类 public class Items { private int id; // 商品编号 private String name; // 商 ...

  6. docker镜像下载加速(5)

    镜像下载加速 由于 Docker Hub 的服务器在国外,下载镜像会比较慢.幸好 DaoCloud 为我们提供了免费的国内镜像服务. 下面介绍如果使用镜像. 在 daocloud.io 免费注册一个用 ...

  7. Selenium2Library中select frame关键字对没有name和id的frame或者iframe的处理

    elenium2Library中原有的select_frame函数(对应的关键字为select frame)可根据locator选择frame,但是,若某个frame或者iframe没有id,没有na ...

  8. (转) C#中使用throw和throw ex抛出异常的区别

    通常,我们使用try/catch/finally语句块来捕获异常,就像在这里说的.在抛出异常的时候,使用throw和throw ex有什么区别呢? 假设,按如下的方式调用几个方法: →在Main方法中 ...

  9. 洛谷 P3369 【模板】普通平衡树 (Treap)

    题目链接:P3369 [模板]普通平衡树 题意 构造一种数据结构满足给出的 6 种操作. 思路 平衡树 平衡树的模板题. 先学习了一下 Treap. Treap 在插入结点时给该结点随机生成一个额外的 ...

  10. git 强制取消本地修改

    本地的项目中修改不做保存操作,可以用到Git pull的强制覆盖,具体代码如下: git fetch --allgit reset --hard origin/master git fetch 指令是 ...