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 ...
随机推荐
- javascript飞机大战-----0010完整版代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Jenkins持续集成【简介】
1.1 目前主流网站部署的流程 目前主流网站部署方法,通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台 ...
- 170517、Redis 的安装与使用(单节点)
IP : 192.168.4.111 1环 境: CentOS 6.6s Redis 版 本 : redis- - 3.0 0 (考虑到 Redis3.0 在集群和性能提升方面的特性,rc 版为正式版 ...
- 玩转Javascript 给JS写测试
给js写测试已经不是什么稀奇的事情了,最近项目里用了jasmine和JsTestDriver两种js测试框架.JsTestDriver易于与持续构建系统相集成并能够在多个浏览器上运行测试轻松实现TDD ...
- Oracle安装部署之 timesten install on redhat6.5
一.安装前检查 [root@localhost ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (San ...
- EOS Dapp开发(1)-基于Docker的开发环境搭建
随着EOS主网的上线,相信基于EOS的Dapp开发会越来越多,查阅了很多资料相关的开发资料都不是很多,只能自己摸索,按照网上仅有的几篇教程,先git clonehttps://github.com/E ...
- 商铺项目(Redis缓存)
AOF,RDB是两种 redis持久化的机制.用于crash后,redis的恢复. 两种区别就是,AOF是持续的用日志记录写操作,crash后利用日志恢复:RDB是平时写操作的时候不触发写,只有手动提 ...
- [golang note] 协程基础
协程概念 √ 协程通常称为coroutine,在golang中称为goroutine. √ 协程本质上是一种用户态线程,它不需要操作系统来进行抢占式调度,在实际实现中寄存在线程之中. √ 协程系统开销 ...
- DNS(bind)添加A、CNAME、MX、PTR记录、智能DNS(ACL)
1.添加一条A记录(记得更改serial): vim /var/named/chroot/etc/lnh.com.zone 重启一下: rndc reload 查看从服务器: 测试结果: master ...
- c/c++值传递和引用传递
今天看数据结构的时候,因为是c语言版的,刚开始学的时候就对指针搞的焦头烂额,今天,发现参数传递的时候,&符号也莫名其妙,搜了一篇好文,转载下来. 一. 函数参数传递机制的基本理论 函数参数传递 ...