小编Aar*_*ron的帖子

安装在子域中的引擎中的路由不会继承约束

建立

我们当前的Rails应用程序是由作为引擎安装的子应用程序构成的.通常,这些引擎安装在主routes.rb文件的子域中,如下所示

mount MySubApp::Engine => '/', as: :sub_app, constraints: {subdomain: 'sub_app'}
Run Code Online (Sandbox Code Playgroud)

问题

内路线MySubApproutes.rb文件,使用时命名拿到子域_url的帮手.例如以下内容apps/my_sub_app/config/routes.rb

MySubApp::Engine.routes.draw do
  resources :foos
end
Run Code Online (Sandbox Code Playgroud)

给我们,sub_app.foo_url(5)但结果

http:// www .example.com/foos/5

什么时候我们想要

http:// sub_app .example.com/foos/5

TL;博士

如何将引擎的安装约束传递到其命名路径?

编辑:一个解决方法

虽然我仍然更喜欢更好的解决方案,但以下方法仍然可行.您可以将每个routes.rb可以安装在子域中的子应用程序文件中的所有路径包装起来,就像这样

MySubApp::Engine.routes.draw do
  constraints Rails.application.routes.named_routes[:sub_app].constraints do
    resources :foos
  end
end
Run Code Online (Sandbox Code Playgroud)

编辑2:一个不太理想的解决方法

评论者(自删除?)指出您可以将subdomain选项传递给帮助者,但我们希望避免使用sub_app.foo_url(5, {subdomain: 'sub_app'})每个跨子域链接.即使我们将子域名移动到ENV var并创建了一个包装器,这也不是DRY.

subdomain routing routes ruby-on-rails rails-engines

16
推荐指数
1
解决办法
1469
查看次数

Rails`where`的时间少于查询

建立

Rails的where方法可以在哈希中使用一个范围来生成一个查询,该查询将搜索该范围内的值.例如:

User.where(cash_money: 10..1000)
#=> SELECT `users`.* FROM `users`  WHERE (`users`.`cash_money` BETWEEN 10 AND 1000)
Run Code Online (Sandbox Code Playgroud)

这也可以用于时间戳

User.where(last_deposit: 10.days.ago..1000.days.ago)
#=> SELECT `users`.* FROM `users`  WHERE (`users`.`last_deposit` BETWEEN '2014-05-19 14:42:36' AND '2011-09-02 14:42:36')
Run Code Online (Sandbox Code Playgroud)

我发现你可以使用像这样的哈希语法做一个小于或大于数字的简单

User.where(cash_money: 10..Float::INFINITY)
#=> SELECT `users`.* FROM `users`  WHERE (`users`.`cash_money` >= 10)
Run Code Online (Sandbox Code Playgroud)

同样可以-Float::INFINITY用于少于查询.

有没有办法用时间戳来做到这一点所以我可以得到如下的查询?

SELECT `users`.* FROM `users`  WHERE (`users`.`last_deposit` >= '2014-05-19 14:42:36')
Run Code Online (Sandbox Code Playgroud)

我不能使用Float::INFINITYDate::Infinity使用范围,因为他们都错误ArgumentError: bad value for range.

当前的简单解决方

User.where('`users`.`last_deposit` >= ?', 10.days.ago)
Run Code Online (Sandbox Code Playgroud)

将生成相同的SQL,但如果这可以使用字符串以外的对象完成,我想这样做.

潜力(Meh)答案

这有点糟糕但可以使用Time.at(0)和使用范围来完成 …

mysql sql ruby-on-rails date arel

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

如何清除rails控制台历史记录

当我运行rails c并在irb启动时按下向上键时,我可以看到我在遇到debuggerruby-debug gem命令后我的应用程序掉到irb时输入的最后一个命令.我不仅希望清除这些命令,而且如果我将rails c在上一次rails控制台会话期间发出最后一个命令,我希望它能够完成.我认为它曾经这样做,但我不确定发生了什么变化.如果有帮助的话,我在Mac OS 10.6.5上使用ruby 1.8.7和rails 3.0.3.

更新

回答在过渡期帮助了我.最近我做了一些挖掘,以了解更多,并意识到存在许多相互矛盾的问题.

IRB检查你是否有~/.irbrc,如果没有,/etc/irbrc就像雷提到的那样.但是,如果您正在使用rvm,则需要考虑另一个文件,如果您已设置(如果使用的话),则会~/.rvm/scripts/irbrc加载~/.rvm/scripts/irbrc.rb(注意)..rbrvm_pathENVrvm

有趣的是,虽然~/.rvm/scripts/irbrc.rb基于/etc/irbrc它们不同,但在某些方面有所不同.检测系统中使用哪一个的最明显的方法和最简单的方法是它们的历史文件名.如果/etc/irbrc正在使用你的历史文件将~/.irb_history在那里为rvm的是~/.irb-history(:_VS -).

希望这些附加信息可以帮助您确定设置系统所需的内容.

饶恕忧虑

我已经停止使用,debugger并已移动到pry-byebug包括pry宝石.Pry是IRB的替代品,但也可以在其旁边和内部使用.我能够提供上述更新的原因是因为我试图找出如何将各自的历史分开.欲了解更多信息,请参阅对SO问题的回答:"为什么撬历史会阻止历史?" .我已经为Pry包含了已知Github问题的链接以及我尝试修复它.

ruby ruby-on-rails irb readline pry

12
推荐指数
2
解决办法
6024
查看次数

npm install 将已解析的 URL 更改为 false

问题

\n\n

当我提取团队的代码并运行npm install其中的许多项目时package-lock.json,它们的resolved属性从 URL 更改为false. 例如

\n\n
"debug": {\n  "version": "3.2.6",\n  "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",\n  \xe2\x80\xa6\n},\n\n// changes to \n\n"debug": {\n  "version": "3.2.6",\n  "resolved": false,\n  \xe2\x80\xa6\n},\n
Run Code Online (Sandbox Code Playgroud)\n\n

询问

\n\n

我希望这种事不要发生。我不明白为什么会发生这种情况,也不明白是什么原因造成的。这似乎是一个非常奇怪和严重的错误。如果我签入并部署它会发生什么?\xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f

\n\n

细节

\n\n

npm -v #=> 6.14.5

\n\n

node -v #=> v12.13.0

\n

node.js npm package.json npm-install package-lock.json

9
推荐指数
1
解决办法
6350
查看次数

在没有预先构建的文件的情况下安装库的解决方案

有些库在其Github存储库中没有已经构建的JavaScript文件,因为这些库的作者反对保持构建工件(例如Sinon.JS).有没有一种首选的方法来使用Bower来解决这个问题?

我知道我可以分叉存储库并使用Bower预先构建的文件注册我的fork.我只是不确定这是否是处理此问题的最佳/正确方法.

bower

8
推荐指数
2
解决办法
2563
查看次数

为iOS和模拟器创建一个静态库以进行分发

如果你为iOS创建一个静态库,你是否必须用它来分发头文件,还是有另一种方法让它工作?

目前我有一个my_lib.a文件用于设备和模拟器但是当我将它拖到另一个测试应用程序中使用它时,它说它找不到标题,并且我在代码中使用它的所有地方都是未申报.所以我认为我要么做错了,要么我还要用它发送相应的头文件.

我的流程背景:

我已经看到了两个为设备和模拟器创建静态库的指南.本网站上的一个:使用Xcode和SDK 4+构建胖静态库(设备+模拟器)

这里有一个:http://mark.aufflick.com/blog/2010/11/19/making-a-fat-static-library-for-ios-device-and-simulator

我用第二个网站试试看.如果我做得对,我也有点好奇.我刚进入Release-iphone(os |模拟器)文件夹,在ios one中找到了.a,在模拟器中找到了.o.

static objective-c static-libraries ios

7
推荐指数
1
解决办法
1万
查看次数

CSS:最后一个子元素的高度应该基于previos兄弟,但不是溢出父元素

相关JS小提琴http://jsfiddle.net/arosen/FMQtR/

问题

我的HTML看起来像这样:

<div id='parent'>
  <div id='one'>
    A variable amount of text here.
  </div>

  <div id='two'>
    A less important variable amount of text here.
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

#parent div是固定高度,不能更改.在其中,我至少有两个孩子的div.第一个(或许多)将在其中确定其高度的未知数量的文本.基于第一个的内容,我希望最后一个占用尽可能多的高度留在父级但不溢出.

我目前的示例CSS是:

#parent {
    border: 1px solid #000;
    height: 150px;
    width: 150px;
}
  #one, #two {
    border: 1px dashed #333;
    height: auto;
    margin: 5px;
    padding: 5px;
    overflow: hidden;
  }
Run Code Online (Sandbox Code Playgroud)

我目前的JS解决方案

function() {
  var $two = $('#two');
  var $parent = $('#two').parent()
  $parent.css('overflow', 'hidden');
  var heightDifference = $parent[0].scrollHeight - $parent.height();
  $two.css('height', $two.height() - heightDifference); …
Run Code Online (Sandbox Code Playgroud)

css overflow

7
推荐指数
1
解决办法
942
查看次数

溢出隐藏破解translateZ

建立

我有三个人div在容器内的所有方向上使用CSS3翻译,该容器div本身在外部全屏内div.最外面div的全屏幕perspective设置在它上面.

HTML

<div class='outer'>
  <div class='container ofhidden'>
    <div class='item' id='item1'></div>
    <div class='item' id='item2'></div>
    <div class='item' id='item3'></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.outer {
  perspective: 1000;
  width: 100%;
  height: 100%;
  position: absolute;
  overflow: hidden;
}
.outer .container {
  background-color: grey;
  width: 130%;
  height: 100%;
  padding: 1em;
}
.outer .container.ofhidden {
  overflow: hidden;
}
.outer .container .item {
  border: 1px solid black;
  width: 50px;
  height: 50px;
}
.outer .container .item#item1 {
  background-color: green; …
Run Code Online (Sandbox Code Playgroud)

css overflow css3 css-transforms

7
推荐指数
1
解决办法
3471
查看次数

使用Graph API查明用户是否与其他一个用户成为朋友

我试图找出用户A是否是用户B的朋友,但我不想要用户A的整个朋友列表.有没有办法,使用Koala/the Graph API简单地找出用户A是否只是使用用户B的Facebook ID与用户B的朋友?

ruby-on-rails facebook-graph-api koala

6
推荐指数
1
解决办法
2042
查看次数

Rails 3将范围与连接合并

建立

对于这个问题,我将使用以下三个类:

class SolarSystem < ActiveRecord::Base
  has_many :planets

  scope :has_earthlike_planet, joins(:planets).merge(Planet.like_earth)
end

class Planet < ActiveRecord::Base
  belongs_to :solar_system
  belongs_to :planet_type

  scope :like_earth, joins(:planet_type).where(:planet_types => {:life => true, :gravity => 9.8})
end

class PlanetType < ActiveRecord::Base
  has_many :planets

  attr_accessible :gravity, :life
end
Run Code Online (Sandbox Code Playgroud)

问题

范围has_earthlike_planet不起作用.它给了我以下错误:

ActiveRecord :: ConfigurationError:找不到名为"planet_type"的关联; 也许你拼错了吗?

我发现这是因为它等同于以下内容:

joins(:planets, :planet_type)...
Run Code Online (Sandbox Code Playgroud)

和SolarSystem没有planet_type关联.我想在like_earthon Planet,has_earthlike_planeton上使用scope SolarSystem,并希望避免重复代码和条件.有没有办法合并这些范围,就像我试图做但却缺少一块?如果没有,我可以用什么其他技术来实现这些目标?

ruby-on-rails rails-activerecord

6
推荐指数
1
解决办法
8541
查看次数