我的Rails应用程序中有一些错误,我试图通过发出以下命令来启动Rails控制台:
rails console
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,我总是得到同样的错误:
/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `require': cannot load such file -- readline (LoadError)
from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `<top (required)>'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `require'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `<top (required)>'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `require'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我真的尝试过在网上找到的所有可能的解决方案,因为很多人遇到了同样的错误.不幸的是,似乎没有任何效果.当我尝试以下命令时:
ruby /usr/local/rvm/src/ruby-2.1.1/ext/readline/extconf.rb
Run Code Online (Sandbox Code Playgroud)
我得到以下输出
checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... yes
checking for readline/history.h... yes
checking for readline() in -lreadline... no
checking for readline() in -ledit... no
checking for editline/readline.h... no
*** /usr/local/rvm/src/ruby-2.1.1/ext/readline/extconf.rb failed ***
Run Code Online (Sandbox Code Playgroud)
表明缺少某些东西,但使用apt-get安装readline也没有任何区别.我猜它可能与不兼容的gem版本有关,因为控制台前一段时间曾短暂工作过.readline是否存在任何已知版本问题?很多人似乎都遇到过这个宝石的问题.
所以,我有一个名为employees的MySQL表.
ID name meta
0 jack ok
1 anne del
Run Code Online (Sandbox Code Playgroud)
我想写一个触发器来阻止meta ='del'的行来更新元字段.所以,如果我这样做:
UPDATE employees SET meta = 'busy' WHERE ID = 0
Run Code Online (Sandbox Code Playgroud)
该行应该更新,元将"忙"
但当我这样做时:
UPDATE employees SET meta = 'busy' WHERE ID = 1
Run Code Online (Sandbox Code Playgroud)
元字段应该仍然是'del'
我试过了:
delimiter $$
CREATE TRIGGER updateEmployees
BEFORE UPDATE ON employees
FOR EACH ROW
BEGIN
IF OLD.meta = 'del' THEN
NEW.meta = 'del'
END IF;
END$$
delimiter ;
Run Code Online (Sandbox Code Playgroud)
但MySQL返回时出现语法错误.有任何想法吗?
所以,我正在建立一个用户可以上传观看视频的网站.我正在使用标准的HTML5视频播放器(<video...> <src>...
)目前,我使用多种来源:MP4,OGG和WEBM,以实现跨浏览器兼容性
由于保持三种格式既CPU占用(转换)以及占用宝贵的磁盘空间这一事实,我开始寻找需要确定是否真的需要支持这三种格式
根据我在维基百科(http://en.wikipedia.org/wiki/HTML5_video)上找到的图表,OGG和MP4应该足够了,因为所有浏览器似乎都支持这些格式中的至少一种
......或者我错过了什么?
对于我的应用程序,我需要为iOS的Info.plist文件添加一些设置.我认为最好的方法是将这些设置添加到我的config.xml文件中(我正在使用PhoneGap).当我将以下内容添加到config.xml文件并运行时
cordova build ios
Run Code Online (Sandbox Code Playgroud)
要么
cordova update platform ios
Run Code Online (Sandbox Code Playgroud)
我的Info.plist文件中没有添加任何内容,我完全不知道为什么会这样.构建显示"成功",所以我认为没有语法错误.
我试过了:
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<config-file target="*-Info.plist" parent="NSAppTransportSecurity">
<array>
<dict>
<key>NSExceptionDomains</key>
<array>
<dict>
<key>s3.amazonaws.com</key>
<array>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow insecure HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</array>
</dict>
</array>
</dict>
</array>
</config-file>
</platform>
Run Code Online (Sandbox Code Playgroud)
和
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<config-file target="*-Info.plist" parent="NSAppTransportSecurity">
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>s3.amazonaws.com</key>
<dict>
<!--Include to allow …
Run Code Online (Sandbox Code Playgroud) 我在Geolocation Cordova插件(org.apache.cordova.geolocation)上遇到了一些问题.它在iOS上运行良好,但在Android上根本没有.
据我了解,该插件曾经包含原生的Android代码,但在某些时候被删除了,因为它太错误/慢,本机Web HTML5实现更加稳定和快速.
如果我使用仍然具有本机代码的最新插件版本(0.3.2),它确实有效(但很慢,实际上并非总是如此).但是当它确实返回时,总是填充位置对象.
如果我使用最新的插件版本(1.0.1),getCurrentPosition()会立即返回一个空对象({}).它不会引发错误.
如果我完全删除插件,并手动将权限添加到Android项目:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
Run Code Online (Sandbox Code Playgroud)
同样的事情发生了.我只是无法让它工作,但它没有意义.Android控制台中不显示任何错误.有什么想法吗?
我正在 NodeJS 中开发后端服务。它通过请求临时链接并将此链接发送到第三方分析服务来处理来自 Google Cloud Storage 的图像。我还希望将图像添加到共享的 Google Drive 文件夹中。是否有任何可能的方法可以轻松做到这一点(例如,通过使用 Drive API 并将链接发布到文件,而不是下载文件并随后上传)。换句话说:Drive API 是否接受文件链接,而不是上传文件?或者有没有其他聪明的方法可以轻松地将 Google Cloud 共享到云端硬盘(因为它都是 Google 服务)。
谢谢
google-api google-cloud-storage google-drive-api google-cloud-platform
我正在使用Angular.JS编写Web应用程序,它使用Express和Socket.IO(Node模块)编写的后端系统.我在Angular.JS写了一个工厂来列出元素:
angular.module('myApp.api', ['ngResource'])
.factory('Element', function($resource, Socket) {
return $resource(
'http://localhost:4000/elements/:id',
{ id : '@id' },
{
update: { method: 'PATCH' }
}
);
});
Run Code Online (Sandbox Code Playgroud)
这个工厂在ElementCtrl中使用并相应地显示元素,它完美地工作:
angular.module('myApp.element', [])
.controller('ElementCtrl', ['$scope', 'Element', function($scope, Element) {
var elements = Element.query();
}]);
Run Code Online (Sandbox Code Playgroud)
但是,我还在后端实现了Socket.io,如果元素添加到元素列表中,它会发送一条消息.我想改变Element工厂或者找一些其他方法来为控制器透明地处理它.我的客户端Socket.io代码如下:
angular.module('myApp.socket', [])
.factory('ElementRealtime', function($resource, Socket) {
var socket = io.connect('http://localhost:4000');
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, …
Run Code Online (Sandbox Code Playgroud) 在我的 Rails 应用程序中,在某些情况下,使用 puts 命令输出代码(用于调试目的)。无论如何要在 rails 控制台中遵循此输出(使用 rails c 命令)?或者有没有其他方法可以在 rails 控制台中调试/查看日志?
谢谢!
我正在研究NodeJS后端服务,并使用promises加载任何数据.现在,我想制作来自不同来源的项目组合(数组).我有以下解决方案,但我不认为这是解决这类问题的正确方法.
var results = [];
loop(items, index, data, results).then(function() {
console.log(results);
});
function loop(items, index, data, results) {
return utils.getPromise(function(resolve, reject) {
if (index === items.length) {
// Stop
resolve();
} else {
doAction(items[index], data).then(function(result) {
if (result) {
mergeResults(results, result)
} else {
loop(items, index + 1, data, results).then(resolve, reject);
}
}, reject);
}
});
}
function doAction(item, data) {
return utils.getPromise(function(resolve, reject) {
item.doIt(data).then(resolve, reject);
});
}
Run Code Online (Sandbox Code Playgroud)
我认为正确的方法是立即返回一个承诺,并在运行中添加结果,但我不确切知道如何做到这一点.有什么建议?