Learn Rails5.2 Bundler ; Forms
如果一个Rubyer想要提供一个功能或某个程序或程序的集合给其他Rubyer使用,这个Rubyer可以创建一个package,这个package就叫做gems。
可以通过gem install安装。
https://www.ruby-toolbox.com/
Raisl 本身就是一个gem。
gem 'listen', '>= 3.0.5', '< 3.2' 这是说大于3.0.5版本并小于3.2版本。
'~> 2.0.0' 这是说最高版本用2.0.0
Gemfile.lock被用于多开发者共享相同的版本。
⚠️更新Gemfile,但不要改变Gefile.lock
因为这个机制,你也可以平行使用不同的gem版本在多个Rails程序上。
更新版本bundle update
如果gemfile中,gem 'rails', '4.2.0',你需要改变到4.24。
首先在gemfile中,改成gem 'rails', ''4.2.4', 然后再在terminal中输入bundle update rails
⚠️在每次gem更新后,你需要运行系统测试,来确保一个新的gem版本不会对程序起到负面影响 (完善的系统测试和单元测试很重要。)
bundle outdated (检验过时的gem)
命令是在更新完Rails版本后使用的,检验其他gem是否支持新版本。 如果有过时的gem,会在terminal上显示:
Outdated gems included in the bundle:
* archive-zip (newest 0.10.0, installed 0.7.0)
* websocket-driver (newest 0.7.0, installed 0.6.5
需要更新它们。
bundle exec
bundle exec rake db:migrate
使用gemfile文件指定的gem版本。
如果你用gem install rake安装了10.1.0版本的rake(假设是最新的),当你直接使用调用rake时,使用的会是这个最新版本的rake。 如果项目的Gemfile中指定的版本是0.9.6(或者是Gemfile.lock中是0.9.6)的话,你如果不加bundle exec,将会用rake 10.1.0的版本去执行本来应该由0.9.6版本的rake写出的Rake task。 会不会出问题?可能会,可能不会。因为很有可能原作者使用0.9.6版本的rake写的Rake task中没有什么被废弃的部分,10.1.10也能正确执行。但是不兼容的情况也会发生。 bundle exec就是为了解决这样的问题而存在的:在目前的Bundle环境里执行某个操作,这样对于不同的人来说,不论系统里是什么版本的Gem,总是会使用该项目Gemfile中指定的版本来执行某个操作。
binstubs
有些环境,使用bundle exec太复杂。此时可以使用
$ bundle install --binstubs
之后就可以使用bin/rails db:migrate
bundle install -h
查看相关信息。
作者不是很喜欢gem 'simple_form',不过能节约时间和减少一些trouble.
https://github.com/plataformatec/simple_form (7000✨)
使用scaffold建立基本的结构。
然后根据需要添加不同的FormtagHelper,或者FormHelper
两者的区别,tagHelper需要手动添加name和value。FormHelper需要分配一个ActiveRecord对象。
Cookies
具体用法查阅API.
通过cookie,你可以储存信息在浏览器上,以key/value的形式,格式是string。cookie是web server之前发送给浏览器的。
之后,当浏览发出request时,cookie存在HTTP header中,会从浏览器发送到服务器。
https://en.wikipedia.org/wiki/HTTP_cookie
一个cookies限定4kb。一般只能储存ID。
Rails提供一个hash,cookies[]。
例子:
再进 http://localhost:3000/home/show_cookies,可以看到cookies的值了。
如果进入http://localhost:3000/home/delete_cookies 会删除cookies
cookies[]有value选项,expires选项,等等具体见API。
# Sets a cookie that expires in 1 hour.
cookies[:login] = { value: "XJ-122", expires: 1.hour }
permanent():
cookies.permanent[:user_id] = "chen"
设置到期时间是20年。
Signed Cookies
config/secrets.yml这个机制好像5.2删除了。
Sessions
独立的web page之间没有关联。如果一个用户想要只注册一次就可以在网站上随意浏览。那么就需要用到session[] hash机制。
Rails创建一个新的session为每个访问这个web page的人。默认session被保存到cookie。也可以把它储存在数据库。 一个独立的唯一的session
Learn Rails5.2 Bundler ; Forms的更多相关文章
- Learn Rails5.2- ActiveRecord: Migration , spring的使用(不兼容的解决办法)
偶然一次: 运行rails generate停止不动,网上查找答案,可能是bundle update 之后 spring 版本变化了,和正在运行的 spring 实例不兼容. Spring导致的同样的 ...
- Learn Rails5.2-- rails base(含官方指导Debugging 摘录)
豆知识扩展: <meta> https://www.cnblogs.com/chentianwei/p/9183799.html css selector div > p 选择所有 ...
- Learn Rails5.2 Routes。( 很少用到的参数:constraints和redirect)
Naming a Route get 'home/index', as: "different_name" 会得到prefix: different_name代替home_inde ...
- Learn Rails5.2- Scaffolding and REST,flash.now, flash.keep; Access via JSON
用generator建立一个手脚架 Representational State Transfer (REST). 具像的状态转存. https://en.wikipedia.org/wiki/Re ...
- Learn Rails5.2- ActiveRecord: sqlite3的用法, Query查询语法。乐观锁和悲观锁案例,查询语法includes(), 多态关联,destory和delete, Scope, Validats, Migrations
rails generate model photo title:string album:references 这会产生一个album_id列,当建立belongs_to关联时,需要用到. refe ...
- 3 Suggested Oracle Certifications For Oracle Form's Developers
The following are the most suggested Oracle Certifications for Oracle Application Developers in Form ...
- Learn How To Create Trigger In Oracle Forms
I have written many posts related to triggers in Oracle Forms, I have given examples for Form Level ...
- Learn How To Attach PL/SQL Library In Oracle Forms
To attach a PL/SQL library in the Oracle Forms follow the following steps:1. Click on Attached Libra ...
- Xamarin.Forms介绍
On May 28, 2014, Xamarin introduced Xamarin.Forms, which allows you to write user-interface code tha ...
随机推荐
- 170524、java.lang.IllegalArgumentException: No converter found for return value of type异常解决
错误原因及解决步骤 1.原因:这是因为springmvc默认是没有对象转换成json的转换器的,需要手动添加jackson依赖. 2.解决步骤: 手动添加jackson依赖到pom.xml文件中 &l ...
- opencv学习笔记——颜色空间转换函数cv::cvtColor详解
cv::cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致. 具体 ...
- Oracle HA 之 oracle 11.2 rac库配置active dataguard
目录 configing active dataguard for 11.2 rac. 1 一.建组.建用户.配置环境变量.内核参数等... 1 二.配置共享磁盘... 3 1)创建4块共享磁盘并fd ...
- 理论实践:循序渐进理解AWR细致入微分析性能报告
1. AWR 概述 Automatic Workload Repository(AWR) 是10g引入的一个重要组件.在里面存贮着近期一段时间内(默认是7天)数据库活动状态的详细信息. AWR 报告是 ...
- Mongodb3.X版本的 的用户认证
一直使用公司的mongodb环境,本地的mongodb没有开启认证,为了环境更一致,决定加上本地mongodb的认证,不过在这个过程中发生了点波折. 我使用的是window版本的3.2,公司使用的是2 ...
- Django - 模型层 - 下
一.多表 sql 单表 多表 多对一 多对多 一对一 =============================================== 一对多:Book id title price p ...
- 云备份厂商Rubrik再获2.61亿美元融资,估值高达33亿美元 转自中国存储网
数据管理初创公司Rubrik在Bain Capital Ventures领导的最新一轮融资中筹集了2.61亿美元,估值为33亿美元. 现有的利益相关者 - Lightspeed Venture Par ...
- Java char 和 String 的区别: 字符编码及其存储
一. ASCII码 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定.这被称为ASCII码,一直沿用至今.一个字节(8bit)一共 可以用来表示256种不同的状态 ...
- c primer plus(五版)编程练习-第八章编程练习
1.设计一个程序,统计从输入到文件结尾为止的字符数. #include<stdio.h> int main(void){ int ch; int i; i=; while((ch = ge ...
- python16_day38【flask】
一.简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预 ...