小编lif*_*der的帖子

如何在Ruby(Rails/Sinatra)中实现客户端 - 服务器API和授权?

我需要一个关于如何在ruby中实现"客户端 - 服务器"Web应用程序的建议.任何指南和最佳实践都非常感谢.我对Ruby方式和所需的宝石感兴趣,因为它是一个理想的平台,以及实现这些东西的一般方式和逻辑.

我不是一个优秀的红宝石程序员或熟练的系统设计师,可悲地多年,所以我真的需要你的帮助,因为我仍然希望这件事最终会闪耀.

应用程序的当前外观应如下所示:

DB + Auth DB < - > API App < - >其他应用:

  • 数据库 - 一个数据库或一组数据库,其中一个数据库用于用户组(区域).
  • Auth DB - 一个带有个人用户数据和登录信息的DB,即使主数据库在区域之间分割,也可能是单一的.
  • API应用程序 - 这个东西维护着围绕数据,访问控制和翻译的所有逻辑,可能为所有应用程序提供一个翻译基础.
  • 其他应用程序 - 一堆不同的应用程序,与API绑定,这可能是数据提供程序,它使用某些用户的一些数据和不同类型的UI来搜索API.所有应用程序都没有自己的用户相关信息存储空间,只能通过API处理数据.

API应用程序:看起来最好的工具是Sinatra.问题是:

  1. 如何以清晰的方式组织API?Rails为模型和控制器提供了很好的REST路径设置和文件夹结构.有什么提示或宝石可以提高API构建的实际效果吗?
  2. 如何保持访问?Warden看起来不是一个好选择,因为API客户端本身就是Web应用程序.所以我需要某种身份验证令牌.怎么可能呢?某种自定义OAuth提供商?问题是,我不喜欢通过API存储和传递会话cookie的想法,每个请求传递一些访问令牌.这也是

其他应用程序:主要是基于Web的UI.这部分的逻辑选择是Rails.主要问题是如何实现客户端身份验证.设计很酷,但它是否可以使用令牌,或者它是更合适的工具?

ruby authentication api sinatra

5
推荐指数
1
解决办法
1466
查看次数

Capistrano部署的精神错误

我有一个Capistrano部署脚本已经工作了一段时间,但现在它在部署时抛出了这样的错误:

/Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:203:in `parse': (<unknown>): control characters are not allowed at line 1 column 1 (Psych::SyntaxError)
    from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:203:in `parse_stream'
    from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:151:in `parse'
    from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:127:in `load'
...
Run Code Online (Sandbox Code Playgroud)

它在部署期间还会抛出几个警告:

 ** [out :: test.domain] Warning! PATH is not properly set up, '/home/lifecoder/.rvm/gems/ruby-1.9.3-p448/bin' is not at first place,
 ** [out :: test.domain]
 ** [out :: test.domain] usually this is caused by shell initialization files - check them for 'PATH=...' entries,
 ** [out :: test.domain]
 ** [out :: test.domain] to fix run: 'rvm use ruby-1.9.3-p448'.
Run Code Online (Sandbox Code Playgroud)

我在 …

linux deployment ubuntu capistrano ruby-on-rails-3

5
推荐指数
1
解决办法
931
查看次数

Drupal 6 vs Drupal 7表现

可能重复:
Drupal 7比Drupal 6慢吗?

我想开始新的项目并且不知道要使用什么版本.

我对D6有很大的帮助,还有D7的一个项目(模块开发).看起来D7速度较慢,内存消耗较大,而且目前还缺乏文档.我不需要新的CCK,视图和其他 - 看起来我将编码所需的所有功能作为模块.

D7现在有甜蜜的部分,还是更好的方式是在D6下开发项目?

你自己选择什么方式,为什么?

drupal-6 drupal-7

3
推荐指数
1
解决办法
6766
查看次数

在Rails中添加状态的最佳实践

我需要添加一个对象的状态,并需要一个关于Rails方法的提示.在某个地方,我看到状态被添加到模型中,但已经丢失了.

按状态,我的意思是跟踪项目状态.喜欢{0: :ORDERED, 1: :CHANGED, 2: :SHIPPED, 3: :ARCHIVED}在商店订购.看起来它需要存储在DB,常量或符号中的id,我可以在代码中使用而不是整数id,以及一个或两个用于UI的人类可读消息

ruby model ruby-on-rails-3

2
推荐指数
1
解决办法
2453
查看次数

Angular中的依赖注入2

我认为DI的实现是为了允许在应用程序上使用相同的服务,并根据需要进行更改.但是这个代码片段(Angular 2.0.0-beta.0)拒绝工作:

# boot.ts
import {ProjectService} from './project.service'

bootstrap(AppComponent, [ProjectService]);



# my.component.ts
export class MyComponent {
    constructor(project: ProjectService) {
    }
}
Run Code Online (Sandbox Code Playgroud)

它具有明确的服务要求:

# my.component.ts
import {ProjectService} from './project.service';
export class MyComponent {
    constructor(project: ProjectService) {
    }
}
Run Code Online (Sandbox Code Playgroud)

官方文档有点不一致,但在plunkr示例中也是如此:

# boot.ts
import {HeroesListComponent} from './heroes-list.component';
import {HeroesService}       from './heroes.service';

bootstrap(HeroesListComponent, [HeroesService])



# heroes-list.component.ts
import {HeroesService} from './heroes.service';
Run Code Online (Sandbox Code Playgroud)

这是DI使用的预期方式吗?为什么我们必须在每个需要它的类中导入服务,如果我们不能在启动时描述服务,那么它的好处在哪里?

dependency-injection angular2-services angular

2
推荐指数
1
解决办法
293
查看次数

使用friendly_id自动生成音译的西里尔文slu

我想实现friendly_id现有的模型.应用程序使用russiangem,它可以很好地处理新的或手动保存的记录,但是当我从命令行更新记录时它似乎不起作用.

User.find_each(&:save)(正如friendly_id docs syggested)生成slu like之类的--<id>.

我使用自定义规范化方法来提供音译slu ::

def normalize_friendly_id(input)
  Russian.transliterate input.to_s.mb_chars.downcase
end
Run Code Online (Sandbox Code Playgroud)

但它绝对可能会遗漏一些边缘情况,并处理字符串与"正常"工作流程不同.我正在寻找的是重用常规创建/更新流和本机行为的方法.

ruby-on-rails transliteration friendly-id ruby-on-rails-3

0
推荐指数
1
解决办法
1132
查看次数